static void mov_write_uuidprof_tag(AVIOContext *pb, AVFormatContext *s)

{

    AVStream       *video_st    = s->streams[0];

    AVCodecParameters *video_par = s->streams[0]->codecpar;

    AVCodecParameters *audio_par = s->streams[1]->codecpar;

    int audio_rate = audio_par->sample_rate;

    // TODO: should be avg_frame_rate

    int frame_rate = ((video_st->time_base.den) * (0x10000)) / (video_st->time_base.num);

    int audio_kbitrate = audio_par->bit_rate / 1000;

    int video_kbitrate = FFMIN(video_par->bit_rate / 1000, 800 - audio_kbitrate);



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

    ffio_wfourcc(pb, "uuid");

    ffio_wfourcc(pb, "PROF");



    avio_wb32(pb, 0x21d24fce); /* 96 bit UUID */

    avio_wb32(pb, 0xbb88695c);

    avio_wb32(pb, 0xfac9c740);



    avio_wb32(pb, 0x0);  /* ? */

    avio_wb32(pb, 0x3);  /* 3 sections ? */



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

    ffio_wfourcc(pb, "FPRF");

    avio_wb32(pb, 0x0);  /* ? */

    avio_wb32(pb, 0x0);  /* ? */

    avio_wb32(pb, 0x0);  /* ? */



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

    ffio_wfourcc(pb, "APRF"); /* audio */

    avio_wb32(pb, 0x0);

    avio_wb32(pb, 0x2);   /* TrackID */

    ffio_wfourcc(pb, "mp4a");

    avio_wb32(pb, 0x20f);

    avio_wb32(pb, 0x0);

    avio_wb32(pb, audio_kbitrate);

    avio_wb32(pb, audio_kbitrate);

    avio_wb32(pb, audio_rate);

    avio_wb32(pb, audio_par->channels);



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

    ffio_wfourcc(pb, "VPRF");   /* video */

    avio_wb32(pb, 0x0);

    avio_wb32(pb, 0x1);    /* TrackID */

    if (video_par->codec_id == AV_CODEC_ID_H264) {

        ffio_wfourcc(pb, "avc1");

        avio_wb16(pb, 0x014D);

        avio_wb16(pb, 0x0015);

    } else {

        ffio_wfourcc(pb, "mp4v");

        avio_wb16(pb, 0x0000);

        avio_wb16(pb, 0x0103);

    }

    avio_wb32(pb, 0x0);

    avio_wb32(pb, video_kbitrate);

    avio_wb32(pb, video_kbitrate);

    avio_wb32(pb, frame_rate);

    avio_wb32(pb, frame_rate);

    avio_wb16(pb, video_par->width);

    avio_wb16(pb, video_par->height);

    avio_wb32(pb, 0x010001); /* ? */

}

static void mov_write_uuidprof_tag(AVIOContext *pb, AVFormatContext *s)

{

    AVStream       *video_st    = s->streams[0];

    AVCodecParameters *video_par = s->streams[0]->codecpar;

    AVCodecParameters *audio_par = s->streams[1]->codecpar;

    int audio_rate = audio_par->sample_rate;

    

    int frame_rate = ((video_st->time_base.den) * (0x10000)) / (video_st->time_base.num);

    int audio_kbitrate = audio_par->bit_rate / 1000;

    int video_kbitrate = FFMIN(video_par->bit_rate / 1000, 800 - audio_kbitrate);



    avio_wb32(pb, 0x94); 

    ffio_wfourcc(pb, "uuid");

    ffio_wfourcc(pb, "PROF");



    avio_wb32(pb, 0x21d24fce); 

    avio_wb32(pb, 0xbb88695c);

    avio_wb32(pb, 0xfac9c740);



    avio_wb32(pb, 0x0);  

    avio_wb32(pb, 0x3);  



    avio_wb32(pb, 0x14); 

    ffio_wfourcc(pb, "FPRF");

    avio_wb32(pb, 0x0);  

    avio_wb32(pb, 0x0);  

    avio_wb32(pb, 0x0);  



    avio_wb32(pb, 0x2c);  

    ffio_wfourcc(pb, "APRF"); 

    avio_wb32(pb, 0x0);

    avio_wb32(pb, 0x2);   

    ffio_wfourcc(pb, "mp4a");

    avio_wb32(pb, 0x20f);

    avio_wb32(pb, 0x0);

    avio_wb32(pb, audio_kbitrate);

    avio_wb32(pb, audio_kbitrate);

    avio_wb32(pb, audio_rate);

    avio_wb32(pb, audio_par->channels);



    avio_wb32(pb, 0x34);  

    ffio_wfourcc(pb, "VPRF");   

    avio_wb32(pb, 0x0);

    avio_wb32(pb, 0x1);    

    if (video_par->codec_id == AV_CODEC_ID_H264) {

        ffio_wfourcc(pb, "avc1");

        avio_wb16(pb, 0x014D);

        avio_wb16(pb, 0x0015);

    } else {

        ffio_wfourcc(pb, "mp4v");

        avio_wb16(pb, 0x0000);

        avio_wb16(pb, 0x0103);

    }

    avio_wb32(pb, 0x0);

    avio_wb32(pb, video_kbitrate);

    avio_wb32(pb, video_kbitrate);

    avio_wb32(pb, frame_rate);

    avio_wb32(pb, frame_rate);

    avio_wb16(pb, video_par->width);

    avio_wb16(pb, video_par->height);

    avio_wb32(pb, 0x010001); 

}

    int frame_rate = ((video_st->time_base.den) * (0x10000)) / (video_st->time_base.num);
static void FUNC_0(AVIOContext *VAR_0, AVFormatContext *VAR_1)

{

    AVStream       *video_st    = VAR_1->streams[0];

    AVCodecParameters *video_par = VAR_1->streams[0]->codecpar;

    AVCodecParameters *audio_par = VAR_1->streams[1]->codecpar;

    int VAR_2 = audio_par->sample_rate;

    

    int VAR_3 = ((video_st->time_base.den) * (0x10000)) / (video_st->time_base.num);

    int VAR_4 = audio_par->bit_rate / 1000;

    int VAR_5 = FFMIN(video_par->bit_rate / 1000, 800 - VAR_4);



    avio_wb32(VAR_0, 0x94); 

    ffio_wfourcc(VAR_0, "uuid");

    ffio_wfourcc(VAR_0, "PROF");



    avio_wb32(VAR_0, 0x21d24fce); 

    avio_wb32(VAR_0, 0xbb88695c);

    avio_wb32(VAR_0, 0xfac9c740);



    avio_wb32(VAR_0, 0x0);  

    avio_wb32(VAR_0, 0x3);  



    avio_wb32(VAR_0, 0x14); 

    ffio_wfourcc(VAR_0, "FPRF");

    avio_wb32(VAR_0, 0x0);  

    avio_wb32(VAR_0, 0x0);  

    avio_wb32(VAR_0, 0x0);  



    avio_wb32(VAR_0, 0x2c);  

    ffio_wfourcc(VAR_0, "APRF"); 

    avio_wb32(VAR_0, 0x0);

    avio_wb32(VAR_0, 0x2);   

    ffio_wfourcc(VAR_0, "mp4a");

    avio_wb32(VAR_0, 0x20f);

    avio_wb32(VAR_0, 0x0);

    avio_wb32(VAR_0, VAR_4);

    avio_wb32(VAR_0, VAR_4);

    avio_wb32(VAR_0, VAR_2);

    avio_wb32(VAR_0, audio_par->channels);



    avio_wb32(VAR_0, 0x34);  

    ffio_wfourcc(VAR_0, "VPRF");   

    avio_wb32(VAR_0, 0x0);

    avio_wb32(VAR_0, 0x1);    

    if (video_par->codec_id == AV_CODEC_ID_H264) {

        ffio_wfourcc(VAR_0, "avc1");

        avio_wb16(VAR_0, 0x014D);

        avio_wb16(VAR_0, 0x0015);

    } else {

        ffio_wfourcc(VAR_0, "mp4v");

        avio_wb16(VAR_0, 0x0000);

        avio_wb16(VAR_0, 0x0103);

    }

    avio_wb32(VAR_0, 0x0);

    avio_wb32(VAR_0, VAR_5);

    avio_wb32(VAR_0, VAR_5);

    avio_wb32(VAR_0, VAR_3);

    avio_wb32(VAR_0, VAR_3);

    avio_wb16(VAR_0, video_par->width);

    avio_wb16(VAR_0, video_par->height);

    avio_wb32(VAR_0, 0x010001); 

}

static void FUNC_0(AVIOContext *VAR_0, AVFormatContext *VAR_1)
{ AVStream       *video_st    = VAR_1->streams[0]; AVCodecParameters *video_par = VAR_1->streams[0]->codecpar; AVCodecParameters *audio_par = VAR_1->streams[1]->codecpar; int VAR_2 = audio_par->sample_rate; int VAR_3 = ((video_st->time_base.den) * (0x10000)) / (video_st->time_base.num); int VAR_4 = audio_par->bit_rate / 1000; int VAR_5 = FFMIN(video_par->bit_rate / 1000, 800 - VAR_4); avio_wb32(VAR_0, 0x94); ffio_wfourcc(VAR_0, "uuid"); ffio_wfourcc(VAR_0, "PROF"); avio_wb32(VAR_0, 0x21d24fce); avio_wb32(VAR_0, 0xbb88695c); avio_wb32(VAR_0, 0xfac9c740); avio_wb32(VAR_0, 0x0); avio_wb32(VAR_0, 0x3); avio_wb32(VAR_0, 0x14); ffio_wfourcc(VAR_0, "FPRF"); avio_wb32(VAR_0, 0x0); avio_wb32(VAR_0, 0x0); avio_wb32(VAR_0, 0x0); avio_wb32(VAR_0, 0x2c); ffio_wfourcc(VAR_0, "APRF"); avio_wb32(VAR_0, 0x0); avio_wb32(VAR_0, 0x2); ffio_wfourcc(VAR_0, "mp4a"); avio_wb32(VAR_0, 0x20f); avio_wb32(VAR_0, 0x0); avio_wb32(VAR_0, VAR_4); avio_wb32(VAR_0, VAR_4); avio_wb32(VAR_0, VAR_2); avio_wb32(VAR_0, audio_par->channels); avio_wb32(VAR_0, 0x34); ffio_wfourcc(VAR_0, "VPRF"); avio_wb32(VAR_0, 0x0); avio_wb32(VAR_0, 0x1); if (video_par->codec_id == AV_CODEC_ID_H264) { ffio_wfourcc(VAR_0, "avc1"); avio_wb16(VAR_0, 0x014D); avio_wb16(VAR_0, 0x0015); } else { ffio_wfourcc(VAR_0, "mp4v"); avio_wb16(VAR_0, 0x0000); avio_wb16(VAR_0, 0x0103); } avio_wb32(VAR_0, 0x0); avio_wb32(VAR_0, VAR_5); avio_wb32(VAR_0, VAR_5); avio_wb32(VAR_0, VAR_3); avio_wb32(VAR_0, VAR_3); avio_wb16(VAR_0, video_par->width); avio_wb16(VAR_0, video_par->height); avio_wb32(VAR_0, 0x010001); }