static int mov_write_tmcd_tag(AVIOContext *pb, MOVTrack *track)

{

    int64_t pos = avio_tell(pb);

#if 1

    int frame_duration = av_rescale(track->timescale, track->enc->time_base.num, track->enc->time_base.den);

    int nb_frames = ROUNDED_DIV(track->enc->time_base.den, track->enc->time_base.num);

    AVDictionaryEntry *t = NULL;



    if (nb_frames > 255) {

        av_log(NULL, AV_LOG_ERROR, "fps %d is too large\n", nb_frames);

        return AVERROR(EINVAL);

    }



    avio_wb32(pb, 0); /* size */

    ffio_wfourcc(pb, "tmcd");               /* Data format */

    avio_wb32(pb, 0);                       /* Reserved */

    avio_wb32(pb, 1);                       /* Data reference index */

    avio_wb32(pb, 0);                       /* Flags */

    avio_wb32(pb, track->timecode_flags);   /* Flags (timecode) */

    avio_wb32(pb, track->timescale);        /* Timescale */

    avio_wb32(pb, frame_duration);          /* Frame duration */

    avio_w8(pb, nb_frames);                 /* Number of frames */

    avio_w8(pb, 0);                         /* Reserved */



    if (track->st)

        t = av_dict_get(track->st->metadata, "reel_name", NULL, 0);



    if (t && utf8len(t->value))

        mov_write_source_reference_tag(pb, track, t->value);

    else

        avio_wb16(pb, 0); /* zero size */

#else



    avio_wb32(pb, 0); /* size */

    ffio_wfourcc(pb, "tmcd");               /* Data format */

    avio_wb32(pb, 0);                       /* Reserved */

    avio_wb32(pb, 1);                       /* Data reference index */

    if (track->enc->extradata_size)

        avio_write(pb, track->enc->extradata, track->enc->extradata_size);

#endif

    return update_size(pb, pos);

}

static int mov_write_tmcd_tag(AVIOContext *pb, MOVTrack *track)

{

    int64_t pos = avio_tell(pb);

#if 1

    int frame_duration = av_rescale(track->timescale, track->enc->time_base.num, track->enc->time_base.den);

    int nb_frames = ROUNDED_DIV(track->enc->time_base.den, track->enc->time_base.num);

    AVDictionaryEntry *t = NULL;



    if (nb_frames > 255) {

        av_log(NULL, AV_LOG_ERROR, "fps %d is too large\n", nb_frames);

        return AVERROR(EINVAL);

    }



    avio_wb32(pb, 0); 

    ffio_wfourcc(pb, "tmcd");               

    avio_wb32(pb, 0);                       

    avio_wb32(pb, 1);                       

    avio_wb32(pb, 0);                       

    avio_wb32(pb, track->timecode_flags);   

    avio_wb32(pb, track->timescale);        

    avio_wb32(pb, frame_duration);          

    avio_w8(pb, nb_frames);                 

    avio_w8(pb, 0);                         



    if (track->st)

        t = av_dict_get(track->st->metadata, "reel_name", NULL, 0);



    if (t && utf8len(t->value))

        mov_write_source_reference_tag(pb, track, t->value);

    else

        avio_wb16(pb, 0); 

#else



    avio_wb32(pb, 0); 

    ffio_wfourcc(pb, "tmcd");               

    avio_wb32(pb, 0);                       

    avio_wb32(pb, 1);                       

    if (track->enc->extradata_size)

        avio_write(pb, track->enc->extradata, track->enc->extradata_size);

#endif

    return update_size(pb, pos);

}

static int FUNC_0(AVIOContext *VAR_0, MOVTrack *VAR_1)

{

    int64_t pos = avio_tell(VAR_0);

#if 1

    int VAR_2 = av_rescale(VAR_1->timescale, VAR_1->enc->time_base.num, VAR_1->enc->time_base.den);

    int VAR_3 = ROUNDED_DIV(VAR_1->enc->time_base.den, VAR_1->enc->time_base.num);

    AVDictionaryEntry *t = NULL;



    if (VAR_3 > 255) {

        av_log(NULL, AV_LOG_ERROR, "fps %d is too large\n", VAR_3);

        return AVERROR(EINVAL);

    }



    avio_wb32(VAR_0, 0); 

    ffio_wfourcc(VAR_0, "tmcd");               

    avio_wb32(VAR_0, 0);                       

    avio_wb32(VAR_0, 1);                       

    avio_wb32(VAR_0, 0);                       

    avio_wb32(VAR_0, VAR_1->timecode_flags);   

    avio_wb32(VAR_0, VAR_1->timescale);        

    avio_wb32(VAR_0, VAR_2);          

    avio_w8(VAR_0, VAR_3);                 

    avio_w8(VAR_0, 0);                         



    if (VAR_1->st)

        t = av_dict_get(VAR_1->st->metadata, "reel_name", NULL, 0);



    if (t && utf8len(t->value))

        mov_write_source_reference_tag(VAR_0, VAR_1, t->value);

    else

        avio_wb16(VAR_0, 0); 

#else



    avio_wb32(VAR_0, 0); 

    ffio_wfourcc(VAR_0, "tmcd");               

    avio_wb32(VAR_0, 0);                       

    avio_wb32(VAR_0, 1);                       

    if (VAR_1->enc->extradata_size)

        avio_write(VAR_0, VAR_1->enc->extradata, VAR_1->enc->extradata_size);

#endif

    return update_size(VAR_0, pos);

}

static int FUNC_0(AVIOContext *VAR_0, MOVTrack *VAR_1)
{ int64_t pos = avio_tell(VAR_0); #if 1
int VAR_2 = av_rescale(VAR_1->timescale, VAR_1->enc->time_base.num, VAR_1->enc->time_base.den); int VAR_3 = ROUNDED_DIV(VAR_1->enc->time_base.den, VAR_1->enc->time_base.num); AVDictionaryEntry *t = NULL; if (VAR_3 > 255) { av_log(NULL, AV_LOG_ERROR, "fps %d is too large\n", VAR_3); return AVERROR(EINVAL); } avio_wb32(VAR_0, 0); ffio_wfourcc(VAR_0, "tmcd"); avio_wb32(VAR_0, 0); avio_wb32(VAR_0, 1); avio_wb32(VAR_0, 0); avio_wb32(VAR_0, VAR_1->timecode_flags); avio_wb32(VAR_0, VAR_1->timescale); avio_wb32(VAR_0, VAR_2); avio_w8(VAR_0, VAR_3); avio_w8(VAR_0, 0); if (VAR_1->st)
t = av_dict_get(VAR_1->st->metadata, "reel_name", NULL, 0); if (t && utf8len(t->value))
mov_write_source_reference_tag(VAR_0, VAR_1, t->value); else
avio_wb16(VAR_0, 0); #else
avio_wb32(VAR_0, 0); ffio_wfourcc(VAR_0, "tmcd"); avio_wb32(VAR_0, 0); avio_wb32(VAR_0, 1); if (VAR_1->enc->extradata_size)
avio_write(VAR_0, VAR_1->enc->extradata, VAR_1->enc->extradata_size); #endif
return update_size(VAR_0, pos); }