IIRC, some decoders may accept request_sample_format field or other "hints" in AVCodecContext (see libavcodec/avcodec.h).
Alex On Thu, Jun 2, 2011 at 1:33 AM, Jaymie Strecker <[email protected]> wrote: > Alex, thanks for your reply. I'm not sure what you mean by "color conversion > or filtering". You're referring to something like sws_scale? This is > basically my read/decode loop for seeking-- > > // for each frame from the keyframe to the frame you want: > do { > av_read_frame(pFormatCtx, &packet); > if(packet.stream_index==videoStream) { > avcodec_decode_video2(pCodecCtx, captureFrame, &gotPicture, &packet); > } > av_free_packet(&packet); > } while (! gotPicture); > > There's no color conversion or filtering in there, right? > > -Jaymie > > > On Jun 1, 2011, at 4:01 PM, Alex Cohn wrote: > >> I am afraid you are out of luck there. You can use AVSEEK_FLAG_ANY >> only if you are not interested in the decoded results. For example, >> this way you can extract some metadata, or start read process to reach >> the next I-frame. >> >> There are some optimizations to consider for approach (1), though. For >> example, make sure you request no color conversion or filtering for >> the frames that you do not need. >> >> Alex >> >> On Wed, Jun 1, 2011 at 9:15 PM, Jaymie Strecker <[email protected]> wrote: >>> If you want to seek to an arbitrary frame in a video with interframes, what >>> are your options? >>> >>> As I understand it, you should be able to: >>> (1) seek to the previous keyframe and then enter a read/decode loop until >>> you reach the frame you want, or >>> (2) pass AVSEEK_FLAG_ANY to the seek function (av_seek_frame or >>> avformat_seek_file). >>> >>> Does (2) work? I've tried it with both seek functions, and with various >>> configurations of avcodec_flush_buffers (flush before seeking, after >>> seeking, or not at all) -- but, at best, it results in frames with >>> artifacts. If it makes a difference, I'm working with H.264 videos. >>> >>> So, right now I'm using (1) but the read/decode loop is slow. Is there a >>> faster way to seek? >>> >>> -Jaymie >>> _______________________________________________ >>> Libav-user mailing list >>> [email protected] >>> http://ffmpeg.org/mailman/listinfo/libav-user >>> >> _______________________________________________ >> Libav-user mailing list >> [email protected] >> http://ffmpeg.org/mailman/listinfo/libav-user > > _______________________________________________ > Libav-user mailing list > [email protected] > http://ffmpeg.org/mailman/listinfo/libav-user > _______________________________________________ Libav-user mailing list [email protected] http://ffmpeg.org/mailman/listinfo/libav-user
