Max, Thanks for the reply. Yes I do mean adding one more audio stream. I was wondering if I could some how avoid having a secondary audio stream and instead just make the already existing audio stream contain a muxed version of the audio.
That said, how do I go about changing the volumes on each of the tracks? Thanks Gautam On Thu, Feb 3, 2011 at 12:13 PM, Max The Quantum <[email protected]> wrote: >> This is how I add my video stream to the output encoder > > By the way, there is a better way of setting options of the encoder > (as well as decoder). > Use this function > int av_set_string3(void *obj, const char *name, const char *val, int > alloc, const AVOption **o_out); > definition at line 197 of libavcodec/opt.h > > for example to set c->me_method to ME_HEX; > #include <libavcodec/opt.h> > int res = av_set_string3(c, "me_method", "hex", 1, NULL); > or you can read configuration file line by line and set all needed > options in one loop, like it done in ffmpeg.c > > llist of all avaliable options see in options.c or examples in > ffpresets directory > >> I also have another question, >> I am currently encoding one stream of audio along with these video >> frames. How do I go about muxing a second audio from another audio >> source onto the output file? > > > Do you mean you wand to add one more audio track? > If so, just create new stream with av_new_stream, set correct stream > id to encoded packets and write them with av_write_frame (or > av_interleaved_write_frame) > > 2011/2/3 Gautam Muralidhar <[email protected]> >> >> Sven, >> This is how I add my video stream to the output encoder >> >> -(AVStream*) addVideoStream:(enum CodecID)codec_id >> { >> AVCodecContext *c; >> AVStream *st; >> >> st = av_new_stream(pFmtCtx, 0); >> if (!st) >> { >> NSLog(@"Could not alloc stream"); >> return nil; >> } >> >> c = st->codec; >> c->codec_id = codec_id; >> c->codec_type = AVMEDIA_TYPE_VIDEO; >> >> >> if(codec_id == CODEC_ID_H264) >> { >> // H264 ENCODER SETTINGS FROM SVEN >> c->coder_type = 0; >> c->flags |= CODEC_FLAG_LOOP_FILTER; >> c->me_cmp |= 1; >> c->partitions |= >> X264_PART_I8X8+X264_PART_I4X4+X264_PART_P8X8+X264_PART_B8X8; >> c->me_method = ME_HEX; >> c->me_subpel_quality = 2; >> //c->me_range = 16; >> c->keyint_min = 25; >> //c->scenechange_threshold=40; >> //c->qcompress = 0.6; >> c->qmin = 10; >> c->qmax = 51; >> c->max_qdiff = 4; >> c->max_b_frames = 0; >> c->refs = 1; >> //c->directpred = 1; >> //c->trellis = 1; >> c->flags2 |= >> CODEC_FLAG2_BPYRAMID+CODEC_FLAG2_MIXED_REFS+CODEC_FLAG2_WPRED+CODEC_FLAG2_8X8DCT+CODEC_FLAG2_FASTPSKIP+CODEC_FLAG2_INTRA_REFRESH; >> //c->weighted_p_pred = 2; >> c->crf = 24; >> c->rc_lookahead = 0; >> } >> >> >> // put sample parameters >> c->bit_rate = 4000000; >> // resolution must be a multiple of two >> c->width = outputWidth; >> c->height = outputHeight; >> // time base: this is the fundamental unit of time (in seconds) in >> terms >> // of which frame timestamps are represented. for fixed-fps content, >> // timebase should be 1/framerate and timestamp increments should be >> // identically 1. >> c->time_base.den = streamFrameRate; >> c->time_base.num = 1; >> c->gop_size = 250; // emit one intra frame every twelve frames at most >> c->pix_fmt = STREAM_PIX_FMT; >> >> // some formats want stream headers to be separate >> if(pFmtCtx->oformat->flags & AVFMT_GLOBALHEADER) >> c->flags |= CODEC_FLAG_GLOBAL_HEADER; >> >> encodedFrames = 0; >> >> return st; >> } >> >> >> I also have another question, >> I am currently encoding one stream of audio along with these video >> frames. How do I go about muxing a second audio from another audio >> source onto the output file? >> >> Thanks >> Gautam >> >> On Thu, Feb 3, 2011 at 1:04 AM, Sven Alisch <[email protected]> wrote: >> > Gautam,, >> > >> > your code looks ok, also for h.264. My code does not really differ. >> > >> >> doesn't seem to add up. >> > >> > Do you mean, you are missing some pictures? Than yes, please tell me. I >> > had the same problem and I working currently at a function to solve this. >> > By the way, please post me your encoding options for h.264. Maybe you >> > missed an encoding option. >> > >> > Does ffmpeg post any error warnings while your encoding process? If not >> > the please add the line av_log_set_level(AV_LOG_VERBOSE); >> > >> > So we can see if there is an another problem. >> > >> > regards, >> > Sven >> > >> >> Thanks >> >> Gautam >> >> >> >> On Tue, Feb 1, 2011 at 12:11 PM, Sven Alisch <[email protected]> wrote: >> >>> Dear Gautam, >> >>> >> >>> This really no problem, because I was a bloody beginner and the people >> >>> here helped me very much. If you need code, don't hestitate to post it >> >>> and ask. >> >>> >> >>> regards, >> >>> Sven >> >>> >> >>> Am 01.02.2011 um 21:04 schrieb Gautam Muralidhar: >> >>> >> >>>> Sven, >> >>>> This is great, thanks again. Please excuse me for beginner questions. >> >>>> I may have to bother you in the near future with more info :) >> >>>> Thanks in advance >> >>>> Gautam >> >>>> >> >>>> On Tue, Feb 1, 2011 at 12:03 PM, Sven Alisch <[email protected]> wrote: >> >>>>> Gautam, >> >>>>> >> >>>>>> my case I dont cut frames at all. So I assume that the calculation of >> >>>>>> my pts and dts would be something like frameNR*40*90 like in your >> >>>>>> case? >> >>>>> >> >>>>> For the dts you have got right. The pts you don't need to calculate >> >>>>> because you get the pts as a present by avcodec_encode_video-function. >> >>>>> >> >>>>> regards, >> >>>>> Sven >> >>>>> >> >>>>>> Thanks >> >>>>>> Gautam >> >>>>>> >> >>>>>> On Tue, Feb 1, 2011 at 11:53 AM, Sven Alisch <[email protected]> wrote: >> >>>>>>> Gautam, >> >>>>>>> >> >>>>>>>> What are your magic numbers in your math? 40*90 and 120*90? >> >>>>>>> >> >>>>>>> Sorry for the hard coded magic numbers. My code is quick and dirty. >> >>>>>>> I have to do a finetuning now. >> >>>>>>> >> >>>>>>> 40*90 means 40 ms (because in germany the duration of a frame is 40 >> >>>>>>> ms) and 90 because of the 90kHz by the standard for PTS-values. >> >>>>>>> >> >>>>>>>> Also where do you get decodeToFrame value? >> >>>>>>> >> >>>>>>> Oh this is my own variable. The background is following. My program >> >>>>>>> should cut not only at keyframes. If I cut not at a keyframe, then I >> >>>>>>> reencode my "open" GOP. So decodeToFrame tells me, how many frames >> >>>>>>> to decode till the position where I have to reencode my stream. >> >>>>>>> >> >>>>>>> Example: >> >>>>>>> >> >>>>>>> My GOP structure >> >>>>>>> >> >>>>>>> IBPBPBPPP... >> >>>>>>> >> >>>>>>> Lets assume I want to cut my videofile at the 3'rd position. Now >> >>>>>>> decodeToFrame is 3. But I have to decode the whole GOP including the >> >>>>>>> first key frame. At the 3'rd frame I reencode and create a new coded >> >>>>>>> shorter sequence. My english is bad, but did you understand? >> >>>>>>> >> >>>>>>> regards, >> >>>>>>> Sven >> >>>>>>> >> >>>>>>>> >> >>>>>>>> >> >>>>>>>> On Tue, Feb 1, 2011 at 11:34 AM, Sven Alisch <[email protected]> wrote: >> >>>>>>>>> Dear Gautam, dear Max, >> >>>>>>>>> >> >>>>>>>>> Thank you for your proposals. Now it works. The main problem (I >> >>>>>>>>> think) depends on the avframe. This avframe was the direct output >> >>>>>>>>> from the decoder. So this avframe contains many informations that >> >>>>>>>>> disturbs the encoder. I show the solution (quick and dirty code! >> >>>>>>>>> No memory cleanup and so on... ) at the end of my mail. >> >>>>>>>>> >> >>>>>>>>> @Max >> >>>>>>>>> >> >>>>>>>>> You've got right. It is better to comment the last one out. >> >>>>>>>>> >> >>>>>>>>> @Gautam >> >>>>>>>>> >> >>>>>>>>> Yes of course. No problem. Here is my code. >> >>>>>>>>> >> >>>>>>>>> if (frameFinished) >> >>>>>>>>> >> >>>>>>>>> // Here the decoder is finished >> >>>>>>>>> and decode a frame from an existent h.264 stream >> >>>>>>>>> { >> >>>>>>>>> frameNr++; >> >>>>>>>>> >> >>>>>>>>> if (frameNr >= decodeToFrame) >> >>>>>>>>> { >> >>>>>>>>> AVCodecContext* c = t->streamContext->codec; >> >>>>>>>>> >> >>>>>>>>> AVFrame* newFrame = avcodec_alloc_frame(); >> >>>>>>>>> >> >>>>>>>>> // Initialize a new frame >> >>>>>>>>> int size = avpicture_get_size(c->pix_fmt, c->width, >> >>>>>>>>> c->height); >> >>>>>>>>> uint8_t* picture_buf = av_malloc(size); >> >>>>>>>>> avpicture_fill((AVPicture *)newFrame, picture_buf, >> >>>>>>>>> c->pix_fmt, c->width, c->height); >> >>>>>>>>> av_picture_copy((AVPicture*)newFrame, >> >>>>>>>>> (AVPicture*)avframe, c->pix_fmt, c->width, c->height); // Copy >> >>>>>>>>> only the frame content without any other disturbing stuff >> >>>>>>>>> >> >>>>>>>>> newFrame->pts = (frameNr - decodeToFrame)*40*90; >> >>>>>>>>> >> >>>>>>>>> // Setting correct pts >> >>>>>>>>> >> >>>>>>>>> int out_size = avcodec_encode_video(c, >> >>>>>>>>> video_outbuf, video_outbuf_size, newFrame); >> >>>>>>>>> if (out_size > 0) >> >>>>>>>>> { >> >>>>>>>>> av_init_packet(&tmp_packet); >> >>>>>>>>> >> >>>>>>>>> if (c->coded_frame->pts != AV_NOPTS_VALUE) >> >>>>>>>>> { >> >>>>>>>>> tmp_packet.pts = >> >>>>>>>>> av_rescale_q(c->coded_frame->pts, >> >>>>>>>>> >> >>>>>>>>> c->time_base, >> >>>>>>>>> >> >>>>>>>>> c->time_base) + 120*90; >> >>>>>>>>> tmp_packet.dts = >> >>>>>>>>> encodedFrames*40*90; >> >>>>>>>>> } >> >>>>>>>>> if(c->coded_frame->key_frame) >> >>>>>>>>> tmp_packet.flags |= AV_PKT_FLAG_KEY; >> >>>>>>>>> tmp_packet.stream_index= >> >>>>>>>>> t->streamContext->index; >> >>>>>>>>> tmp_packet.data= video_outbuf; >> >>>>>>>>> tmp_packet.size= out_size; >> >>>>>>>>> av_interleaved_write_frame(formatContext, >> >>>>>>>>> &tmp_packet); >> >>>>>>>>> encodedFrames++; >> >>>>>>>>> } >> >>>>>>>>> } >> >>>>>>>>> } >> >>>>>>>>> >> >>>>>>>>> regards, >> >>>>>>>>> Sven >> >>>>>>>>> >> >>>>>>>>> Am 01.02.2011 um 18:36 schrieb Gautam Muralidhar: >> >>>>>>>>> >> >>>>>>>>>> Sven, >> >>>>>>>>>> I am seeing similar issues. How exactly are you writing your >> >>>>>>>>>> frames? >> >>>>>>>>>> Do you think you can share your code inside the >> >>>>>>>>>> if(outsize >0) >> >>>>>>>>>> { >> >>>>>>>>>> >> >>>>>>>>>> } >> >>>>>>>>>> >> >>>>>>>>>> Thanks >> >>>>>>>>>> Gautam >> >>>>>>>>>> On Tue, Feb 1, 2011 at 6:15 AM, Max The Quantum >> >>>>>>>>>> <[email protected]> wrote: >> >>>>>>>>>>> I've tried your config, but uncommented all lines except >> >>>>>>>>>>> //c->flags2|=CODEC_FLAG2_8X8DCT; >> >>>>>>>>>>> //c->flags2^=CODEC_FLAG2_8X8DCT; // flags2=-dct8x8 >> >>>>>>>>>>> and commented out >> >>>>>>>>>>> c->crf = 22; >> >>>>>>>>>>> >> >>>>>>>>>>> It seems that problem is caused by wrong value of c->keyint_min. >> >>>>>>>>>>> What is >> >>>>>>>>>>> default value for it? >> >>>>>>>>>>> Try to set it manually to, say, 25 :) >> >>>>>>>>>>> >> >>>>>>>>>>> 2011/2/1 Sven Alisch <[email protected]> >> >>>>>>>>>>> >> >>>>>>>>>>>> Hello list, >> >>>>>>>>>>>> >> >>>>>>>>>>>> I want to (re-) encode some pictures I decoded with libav. The >> >>>>>>>>>>>> following >> >>>>>>>>>>>> code shows how I do that: >> >>>>>>>>>>>> >> >>>>>>>>>>>> First I decode an h.264 Stream and get pictures in an AVFrame >> >>>>>>>>>>>> structure. >> >>>>>>>>>>>> After doing this I want to encode them into an h.264 stream. >> >>>>>>>>>>>> <snip> >> >>>>>>>>>>>> bytesDecoded = >> >>>>>>>>>>>> avcodec_decode_video2(m->videofile->VideoTrack->codec_context, >> >>>>>>>>>>>> avframe, >> >>>>>>>>>>>> &frameFinished, &packet); >> >>>>>>>>>>>> >> >>>>>>>>>>>> if (frameFinished) >> >>>>>>>>>>>> { >> >>>>>>>>>>>> frameNr++; >> >>>>>>>>>>>> >> >>>>>>>>>>>> if (frameNr >= decodeToFrame) >> >>>>>>>>>>>> { >> >>>>>>>>>>>> AVCodecContext* c = t->streamContext->codec; >> >>>>>>>>>>>> avframe->pts = (frameNr - decodeToFrame)*40*90; >> >>>>>>>>>>>> int out_size = avcodec_encode_video(c, >> >>>>>>>>>>>> video_outbuf, >> >>>>>>>>>>>> video_outbuf_size, avframe); >> >>>>>>>>>>>> if (out_size > 0) >> >>>>>>>>>>>> { >> >>>>>>>>>>>> ... >> >>>>>>>>>>>> } >> >>>>>>>>>>>> <snap> >> >>>>>>>>>>>> >> >>>>>>>>>>>> My Encoding parameters for x264 are set in a function like this: >> >>>>>>>>>>>> >> >>>>>>>>>>>> bool h264_initEncoder(AVFormatContext* fc, tavtrack_t* track) >> >>>>>>>>>>>> { >> >>>>>>>>>>>> AVCodec* codec = NULL; >> >>>>>>>>>>>> AVCodecContext* c = NULL; >> >>>>>>>>>>>> >> >>>>>>>>>>>> c = track->streamContext->codec; >> >>>>>>>>>>>> c->profile = track->codec_context->profile; // >> >>>>>>>>>>>> original set by >> >>>>>>>>>>>> libavformat/libavcodec >> >>>>>>>>>>>> c->level = track->codec_context->level; // >> >>>>>>>>>>>> original set by >> >>>>>>>>>>>> libavformat/libavcodec >> >>>>>>>>>>>> >> >>>>>>>>>>>> // Medium Profile >> >>>>>>>>>>>> // libx264-medium.ffpreset preset >> >>>>>>>>>>>> c->coder_type = FF_CODER_TYPE_AC; // coder = 1 >> >>>>>>>>>>>> c->flags |= CODEC_FLAG_LOOP_FILTER; // flags=+loop >> >>>>>>>>>>>> c->me_cmp|= 1; >> >>>>>>>>>>>> // >> >>>>>>>>>>>> cmp=+chroma, where CHROMA = 1 >> >>>>>>>>>>>> c->partitions |= >> >>>>>>>>>>>> X264_PART_I8X8+X264_PART_I4X4+X264_PART_P8X8+X264_PART_B8X8; >> >>>>>>>>>>>> >> >>>>>>>>>>>> // partitions=+parti8x8+parti4x4+partp8x8+partb8x8 >> >>>>>>>>>>>> c->me_method=ME_HEX; // >> >>>>>>>>>>>> me_method=hex >> >>>>>>>>>>>> c->me_subpel_quality = 7; // subq=7 >> >>>>>>>>>>>> c->me_range = 16; >> >>>>>>>>>>>> // >> >>>>>>>>>>>> me_range=16 >> >>>>>>>>>>>> //c->gop_size = 250; >> >>>>>>>>>>>> // g=250 >> >>>>>>>>>>>> //c->keyint_min = 25; >> >>>>>>>>>>>> // >> >>>>>>>>>>>> keyint_min=25 >> >>>>>>>>>>>> c->scenechange_threshold = 40; // >> >>>>>>>>>>>> sc_threshold=40 >> >>>>>>>>>>>> //c->i_quant_factor = 0.71; // >> >>>>>>>>>>>> i_qfactor=0.71 >> >>>>>>>>>>>> //c->b_frame_strategy = 1; // >> >>>>>>>>>>>> b_strategy=1 >> >>>>>>>>>>>> c->qcompress = 0.6; >> >>>>>>>>>>>> // qcomp=0.6 >> >>>>>>>>>>>> c->qmin = 10; >> >>>>>>>>>>>> // qmin=10 >> >>>>>>>>>>>> c->qmax = 51; >> >>>>>>>>>>>> // qmax=51 >> >>>>>>>>>>>> c->max_qdiff = 4; >> >>>>>>>>>>>> // qdiff=4 >> >>>>>>>>>>>> c->max_b_frames = 3; // bf=3 >> >>>>>>>>>>>> c->refs = 3; >> >>>>>>>>>>>> // refs=3 >> >>>>>>>>>>>> //c->directpred = 1; >> >>>>>>>>>>>> // >> >>>>>>>>>>>> directpred=1 >> >>>>>>>>>>>> //c->trellis = 1; >> >>>>>>>>>>>> // >> >>>>>>>>>>>> trellis=1 >> >>>>>>>>>>>> c->flags2 |= >> >>>>>>>>>>>> CODEC_FLAG2_BPYRAMID+CODEC_FLAG2_MIXED_REFS+CODEC_FLAG2_WPRED+CODEC_FLAG2_8X8DCT+CODEC_FLAG2_FASTPSKIP; >> >>>>>>>>>>>> >> >>>>>>>>>>>> // flags2=+bpyramid+mixed_refs+wpred+dct8x8+fastpskip >> >>>>>>>>>>>> c->weighted_p_pred = 2; // >> >>>>>>>>>>>> wpredp=2 >> >>>>>>>>>>>> >> >>>>>>>>>>>> // libx264-main.ffpreset preset >> >>>>>>>>>>>> //c->flags2|=CODEC_FLAG2_8X8DCT; >> >>>>>>>>>>>> //c->flags2^=CODEC_FLAG2_8X8DCT; // >> >>>>>>>>>>>> flags2=-dct8x8 >> >>>>>>>>>>>> c->crf = 22; >> >>>>>>>>>>>> codec = avcodec_find_encoder(c->codec_id); >> >>>>>>>>>>>> if (!codec) >> >>>>>>>>>>>> return false; >> >>>>>>>>>>>> >> >>>>>>>>>>>> if (avcodec_open(c, codec) < 0) >> >>>>>>>>>>>> return false; >> >>>>>>>>>>>> >> >>>>>>>>>>>> return true; >> >>>>>>>>>>>> } >> >>>>>>>>>>>> >> >>>>>>>>>>>> The Problem is, that the avcode_encode_video( ... ) works but >> >>>>>>>>>>>> no frame will >> >>>>>>>>>>>> be compressed. I get strange errors like this: >> >>>>>>>>>>>> >> >>>>>>>>>>>> [libx264 @ 0x101003600] specified frame type (5) at 0 is not >> >>>>>>>>>>>> compatible >> >>>>>>>>>>>> with keyframe interval >> >>>>>>>>>>>> [libx264 @ 0x101003600] specified frame type (5) at 1 is not >> >>>>>>>>>>>> compatible >> >>>>>>>>>>>> with keyframe interval >> >>>>>>>>>>>> [libx264 @ 0x101003600] specified frame type (3) at 2 is not >> >>>>>>>>>>>> compatible >> >>>>>>>>>>>> with keyframe interval >> >>>>>>>>>>>> >> >>>>>>>>>>>> I get no frame. But why? Does anybody has an hint for me? Are >> >>>>>>>>>>>> my parameters >> >>>>>>>>>>>> wrong? >> >>>>>>>>>>>> >> >>>>>>>>>>>> regards, >> >>>>>>>>>>>> Sven >> >>>>>>>>>>>> _______________________________________________ >> >>>>>>>>>>>> libav-user mailing list >> >>>>>>>>>>>> [email protected] >> >>>>>>>>>>>> https://lists.mplayerhq.hu/mailman/listinfo/libav-user >> >>>>>>>>>>>> >> >>>>>>>>>>> _______________________________________________ >> >>>>>>>>>>> libav-user mailing list >> >>>>>>>>>>> [email protected] >> >>>>>>>>>>> https://lists.mplayerhq.hu/mailman/listinfo/libav-user >> >>>>>>>>>>> >> >>>>>>>>>> >> >>>>>>>>>> >> >>>>>>>>>> >> >>>>>>>>>> -- >> >>>>>>>>>> Gautam Muralidhar >> >>>>>>>>>> Code Particle Inc. >> >>>>>>>>>> (805)-501-0700 >> >>>>>>>>>> _______________________________________________ >> >>>>>>>>>> libav-user mailing list >> >>>>>>>>>> [email protected] >> >>>>>>>>>> https://lists.mplayerhq.hu/mailman/listinfo/libav-user >> >>>>>>>>> >> >>>>>>>>> _______________________________________________ >> >>>>>>>>> libav-user mailing list >> >>>>>>>>> [email protected] >> >>>>>>>>> https://lists.mplayerhq.hu/mailman/listinfo/libav-user >> >>>>>>>>> >> >>>>>>>> >> >>>>>>>> >> >>>>>>>> >> >>>>>>>> -- >> >>>>>>>> Gautam Muralidhar >> >>>>>>>> Code Particle Inc. >> >>>>>>>> (805)-501-0700 >> >>>>>>>> _______________________________________________ >> >>>>>>>> libav-user mailing list >> >>>>>>>> [email protected] >> >>>>>>>> https://lists.mplayerhq.hu/mailman/listinfo/libav-user >> >>>>>>> >> >>>>>>> _______________________________________________ >> >>>>>>> libav-user mailing list >> >>>>>>> [email protected] >> >>>>>>> https://lists.mplayerhq.hu/mailman/listinfo/libav-user >> >>>>>>> >> >>>>>> >> >>>>>> >> >>>>>> >> >>>>>> -- >> >>>>>> Gautam Muralidhar >> >>>>>> Code Particle Inc. >> >>>>>> (805)-501-0700 >> >>>>>> _______________________________________________ >> >>>>>> libav-user mailing list >> >>>>>> [email protected] >> >>>>>> https://lists.mplayerhq.hu/mailman/listinfo/libav-user >> >>>>> >> >>>>> _______________________________________________ >> >>>>> libav-user mailing list >> >>>>> [email protected] >> >>>>> https://lists.mplayerhq.hu/mailman/listinfo/libav-user >> >>>>> >> >>>> >> >>>> >> >>>> >> >>>> -- >> >>>> Gautam Muralidhar >> >>>> Code Particle Inc. >> >>>> (805)-501-0700 >> >>>> _______________________________________________ >> >>>> libav-user mailing list >> >>>> [email protected] >> >>>> https://lists.mplayerhq.hu/mailman/listinfo/libav-user >> >>> >> >>> _______________________________________________ >> >>> libav-user mailing list >> >>> [email protected] >> >>> https://lists.mplayerhq.hu/mailman/listinfo/libav-user >> >>> >> >> >> >> >> >> >> >> -- >> >> Gautam Muralidhar >> >> Code Particle Inc. >> >> (805)-501-0700 >> >> _______________________________________________ >> >> libav-user mailing list >> >> [email protected] >> >> https://lists.mplayerhq.hu/mailman/listinfo/libav-user >> > >> > _______________________________________________ >> > libav-user mailing list >> > [email protected] >> > https://lists.mplayerhq.hu/mailman/listinfo/libav-user >> > >> >> >> >> -- >> Gautam Muralidhar >> Code Particle Inc. >> (805)-501-0700 >> _______________________________________________ >> libav-user mailing list >> [email protected] >> https://lists.mplayerhq.hu/mailman/listinfo/libav-user > _______________________________________________ > libav-user mailing list > [email protected] > https://lists.mplayerhq.hu/mailman/listinfo/libav-user > -- Gautam Muralidhar Code Particle Inc. (805)-501-0700 _______________________________________________ libav-user mailing list [email protected] https://lists.mplayerhq.hu/mailman/listinfo/libav-user
