Changes between Initial Version and Version 6 of Ticket #1607


Ignore:
Timestamp:
Aug 6, 2012, 11:50:18 PM (4 years ago)
Author:
mbradshaw
Comment:

Legend:

Unmodified
Added
Removed
Modified
  • Ticket #1607 – Description

    initial v6  
    1 The documentation of `av_seek_frame()` makes a contract that it seeks to a keyframe if AVSEEK_FLAG_ANY is not set. mpg files break this contract by not seeking to a keyframe but returning success. 
     1The documentation of `av_seek_frame()` makes a contract that it seeks to a keyframe if `AVSEEK_FLAG_ANY` is not set. mpg files break this contract by not seeking to a keyframe and still returning success. 
    22 
    3 Seeking in mpg should require AVSEEK_FLAG_ANY to be set in order for success to be returned. 
     3'''Updated Edit:''' 
     4It seems that any `AVInputFormat` that doesn't have it's own `read_seek()` or `read_seek2()` functions defined will default to either `ff_seek_frame_binary()` or `ff_gen_search()` (with priority given to `ff_seek_frame_binary()`). `ff_seek_frame_binary()` doesn't respect seeking by keyframe, and will break the keyframe contract made by `av_seek_frame()` when `AVSEEK_FLAG_ANY` is not set. 
     5 
     6Proposed solutions: 
     7'''1)''' 
     8Seeking in mpg should require `AVSEEK_FLAG_ANY` to be set in order for success to be returned (return failure if it's not specified). This can be done by requiring `AVSEEK_FLAG_ANY` to be set before calling `ff_seek_frame_binary()`. 
     9 
     10'''2) (in response to Don's suggestions)''' 
     11Change `ff_seek_frame_binary()` so that it respects seeking by keyframe if `AVSEEK_FLAG_ANY` is not set. This can be done by sequentially reading (either forwards or backwards (I would prefer backwards)) up to a keyframe after the binary search is complete. 
    412 
    513For context on how this came about, see this thread: http://ffmpeg.org/pipermail/libav-user/2012-July/002468.html