<div dir="ltr"><div><div><div><div>hello, I am trying to create a chrome extension to capture desktop video stream and produce a video file. I based my work on the muxer.c example and it works except for the fact that av_packet_rescale_ts is not defined (I commented that line and I am able to get a video where only the first frame is visible and the video duration is zero)<br><br></div>as I am using PNACL port of ffmepg (2.1.3), I am forced to use libavcodec 55.39.101, and in that version av_packet_rescale_ts is not defined.<br><br></div>in other tutorials I had found that av_rescale_q is used. I highly appreciate any suggestions about how to replace the call to av_packet_rescale_ts with av_rescale_q or similar. <br><br></div>this is the current code for my add_frame method:<br><br>int test_addframe(const uint8_t * data, uint32_t size, int w, int h){<br><br>   int ret;<br>    AVCodecContext *c;<br>    AVFrame *frame;<br>    int got_packet = 0;<br><br>    c = video_st.st->codec;<br>    frame = test_get_video_frame(&video_st, data, size, w, h);<br>   <br>        AVPacket pkt = { 0 };<br>        av_init_packet(&pkt);<br><br>        ret = avcodec_encode_video2(c, &pkt, frame, &got_packet);<br>        if (ret < 0) {<br>            fprintf(stderr, "Error encoding video frame: %s\n", av_err2str(ret));<br>            exit(1);<br>        }<br><br>        if (got_packet) {<br>            //old version ret = write_frame(oc, &c->time_base, <a href="http://video_st.st">video_st.st</a>, &pkt);<br>        //new version: this is the code of write_frame:   <br>        // rescale output packet timestamp values from codec to stream timebase <br>        <br>        //THIS METHOD DOES NOT EXIST IN PNACL VERSION OF FFMPEG 2.1.3 <br>      //av_packet_rescale_ts(&pkt, &c->time_base, video_st.st->time_base);<br>        <br>        pkt.stream_index = video_st.st->index;<br><br>        // Write the compressed frame to the media file. <br>        log_packet(oc, &pkt);<br>        ret = av_interleaved_write_frame(oc, &pkt);<br>      <br>        } else {<br>            ret = 0;<br>        }<br>    <br><br>    if (ret < 0) {<br>        fprintf(stderr, "Error while writing video frame: %s\n", av_err2str(ret));<br>        exit(1);<br>    }<br>    return (frame || got_packet) ? 0 : 1;<br>};<br> <br><br><div><div><div><div><br clear="all"><div><div class="gmail_signature"><div dir="ltr">Cesar  Pachón<br>-------------------------------------------------------------<br><a href="http://www.cesarpachon.com" target="_blank">www.cesarpachon.com</a>, just a digital hermit<br><br></div></div></div>
</div></div></div></div></div></div>