On 7/15/2021 5:23 PM, Michael Niedermayer wrote:
On Wed, Jul 14, 2021 at 11:33:59AM -0300, James Almer wrote:
It will be used to allow parsers to be more liberal when tagging packets as
keyframes.

Signed-off-by: James Almer <jamr...@gmail.com>
---
  libavcodec/avcodec.h | 1 +
  1 file changed, 1 insertion(+)

diff --git a/libavcodec/avcodec.h b/libavcodec/avcodec.h
index 8b97895aeb..8e3d888266 100644
--- a/libavcodec/avcodec.h
+++ b/libavcodec/avcodec.h
@@ -2809,6 +2809,7 @@ typedef struct AVCodecParserContext {
  #define PARSER_FLAG_ONCE                      0x0002
  /// Set if the parser has a valid file offset
  #define PARSER_FLAG_FETCHED_OFFSET            0x0004
+#define PARSER_FLAG_USE_KEYFRAME_HEURISTICS   0x0008
  #define PARSER_FLAG_USE_CODEC_TS              0x1000

This doesnt "feel" like the best solution to me

dont you think it would be better to export all information ?

The AVParser API is going to be removed at some point for something better that works on packets rather than raw buffers, so ideally we should not expand it too much, and leave more complex implementations for later.

Adding a flag is the simplest way to fix this for now, until a proper rework is done.


the concept of a keyframe is a point at which decoding can begin
that really are at least 3 points

the point at which packets begin to be input into the decoder

the point at which the decoder is able to return some decoded
data which closely resembles the encoder input

and the point at which the decoder output matches 1:1 the output
of a decoder starting from frame 0

All parsers save for h264 are currently only tagging packets containing a coded bitstream that, when decoded, it fully resets the decoding state and depends on no previously parsed data or state, which is what (most) muxers expect. This approach here is making the h264 do the same by default (in line with the decoder), to ensure some muxers don't wrongly mark certain packets as sync samples, while letting others remain liberal about it.

Ideally yes, we'd propagate more detailed information in some way, which then the mp4 muxer can use to build sample groups for h264, hevc and av1. But the existing AVParser API is not adequate for that.




Thanks

[...]


_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

To unsubscribe, visit link above, or email
ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".


_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

To unsubscribe, visit link above, or email
ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".

Reply via email to