* [FFmpeg-devel] [PATCH v2 1/4] cbs_av1: Add tracing headers for metadata types
@ 2023-01-24 22:46 Mark Thompson
2023-01-24 22:46 ` [FFmpeg-devel] [PATCH v2 2/4] cbs_av1: Don't reject unknown metadata Mark Thompson
` (3 more replies)
0 siblings, 4 replies; 6+ messages in thread
From: Mark Thompson @ 2023-01-24 22:46 UTC (permalink / raw)
To: ffmpeg-devel
Make it a little easier to interpret metadata in trace output.
---
libavcodec/cbs_av1_syntax_template.c | 10 ++++++++++
1 file changed, 10 insertions(+)
diff --git a/libavcodec/cbs_av1_syntax_template.c b/libavcodec/cbs_av1_syntax_template.c
index e95925a493..817a0f8ae6 100644
--- a/libavcodec/cbs_av1_syntax_template.c
+++ b/libavcodec/cbs_av1_syntax_template.c
@@ -1843,6 +1843,8 @@ static int FUNC(metadata_hdr_cll)(CodedBitstreamContext *ctx, RWContext *rw,
{
int err;
+ HEADER("HDR CLL Metadata");
+
fb(16, max_cll);
fb(16, max_fall);
@@ -1854,6 +1856,8 @@ static int FUNC(metadata_hdr_mdcv)(CodedBitstreamContext *ctx, RWContext *rw,
{
int err, i;
+ HEADER("HDR MDCV Metadata");
+
for (i = 0; i < 3; i++) {
fbs(16, primary_chromaticity_x[i], 1, i);
fbs(16, primary_chromaticity_y[i], 1, i);
@@ -1920,6 +1924,8 @@ static int FUNC(metadata_scalability)(CodedBitstreamContext *ctx, RWContext *rw,
{
int err;
+ HEADER("Scalability Metadata");
+
fb(8, scalability_mode_idc);
if (current->scalability_mode_idc == AV1_SCALABILITY_SS)
@@ -1934,6 +1940,8 @@ static int FUNC(metadata_itut_t35)(CodedBitstreamContext *ctx, RWContext *rw,
int err;
size_t i;
+ HEADER("ITU-T T.35 Metadata");
+
fb(8, itu_t_t35_country_code);
if (current->itu_t_t35_country_code == 0xff)
fb(8, itu_t_t35_country_code_extension_byte);
@@ -1961,6 +1969,8 @@ static int FUNC(metadata_timecode)(CodedBitstreamContext *ctx, RWContext *rw,
{
int err;
+ HEADER("Timecode Metadata");
+
fb(5, counting_type);
flag(full_timestamp_flag);
flag(discontinuity_flag);
--
2.39.0
_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
To unsubscribe, visit link above, or email
ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".
^ permalink raw reply [flat|nested] 6+ messages in thread
* [FFmpeg-devel] [PATCH v2 2/4] cbs_av1: Don't reject unknown metadata
2023-01-24 22:46 [FFmpeg-devel] [PATCH v2 1/4] cbs_av1: Add tracing headers for metadata types Mark Thompson
@ 2023-01-24 22:46 ` Mark Thompson
2023-01-24 22:46 ` [FFmpeg-devel] [PATCH v2 3/4] av1_parse: Remove unused getbits instance Mark Thompson
` (2 subsequent siblings)
3 siblings, 0 replies; 6+ messages in thread
From: Mark Thompson @ 2023-01-24 22:46 UTC (permalink / raw)
To: ffmpeg-devel
Accept it and pass it through unchanged.
The standard requires that decoders ignore unknown metadata, and indeed
this is tested by some of the Argon coverage streams.
---
libavcodec/cbs_av1.c | 7 +++++++
libavcodec/cbs_av1.h | 7 +++++++
libavcodec/cbs_av1_syntax_template.c | 26 ++++++++++++++++++++++++--
3 files changed, 38 insertions(+), 2 deletions(-)
diff --git a/libavcodec/cbs_av1.c b/libavcodec/cbs_av1.c
index 45e1288a51..8788fee099 100644
--- a/libavcodec/cbs_av1.c
+++ b/libavcodec/cbs_av1.c
@@ -1306,9 +1306,16 @@ static void cbs_av1_free_metadata(void *unit, uint8_t *content)
md = &obu->obu.metadata;
switch (md->metadata_type) {
+ case AV1_METADATA_TYPE_HDR_CLL:
+ case AV1_METADATA_TYPE_HDR_MDCV:
+ case AV1_METADATA_TYPE_SCALABILITY:
+ case AV1_METADATA_TYPE_TIMECODE:
+ break;
case AV1_METADATA_TYPE_ITUT_T35:
av_buffer_unref(&md->metadata.itut_t35.payload_ref);
break;
+ default:
+ av_buffer_unref(&md->metadata.unknown.payload_ref);
}
av_free(content);
}
diff --git a/libavcodec/cbs_av1.h b/libavcodec/cbs_av1.h
index 1fc80dcfa0..36848d4410 100644
--- a/libavcodec/cbs_av1.h
+++ b/libavcodec/cbs_av1.h
@@ -370,6 +370,12 @@ typedef struct AV1RawMetadataTimecode {
uint32_t time_offset_value;
} AV1RawMetadataTimecode;
+typedef struct AV1RawMetadataUnknown {
+ uint8_t *payload;
+ AVBufferRef *payload_ref;
+ size_t payload_size;
+} AV1RawMetadataUnknown;
+
typedef struct AV1RawMetadata {
uint64_t metadata_type;
union {
@@ -378,6 +384,7 @@ typedef struct AV1RawMetadata {
AV1RawMetadataScalability scalability;
AV1RawMetadataITUTT35 itut_t35;
AV1RawMetadataTimecode timecode;
+ AV1RawMetadataUnknown unknown;
} metadata;
} AV1RawMetadata;
diff --git a/libavcodec/cbs_av1_syntax_template.c b/libavcodec/cbs_av1_syntax_template.c
index 817a0f8ae6..dc6724cb59 100644
--- a/libavcodec/cbs_av1_syntax_template.c
+++ b/libavcodec/cbs_av1_syntax_template.c
@@ -2004,6 +2004,29 @@ static int FUNC(metadata_timecode)(CodedBitstreamContext *ctx, RWContext *rw,
return 0;
}
+static int FUNC(metadata_unknown)(CodedBitstreamContext *ctx, RWContext *rw,
+ AV1RawMetadataUnknown *current)
+{
+ int err;
+ size_t i;
+
+ HEADER("Unknown Metadata");
+
+#ifdef READ
+ current->payload_size = cbs_av1_get_payload_bytes_left(rw);
+
+ current->payload_ref = av_buffer_alloc(current->payload_size);
+ if (!current->payload_ref)
+ return AVERROR(ENOMEM);
+ current->payload = current->payload_ref->data;
+#endif
+
+ for (i = 0; i < current->payload_size; i++)
+ fbs(8, payload[i], 1, i);
+
+ return 0;
+}
+
static int FUNC(metadata_obu)(CodedBitstreamContext *ctx, RWContext *rw,
AV1RawMetadata *current)
{
@@ -2028,8 +2051,7 @@ static int FUNC(metadata_obu)(CodedBitstreamContext *ctx, RWContext *rw,
CHECK(FUNC(metadata_timecode)(ctx, rw, ¤t->metadata.timecode));
break;
default:
- // Unknown metadata type.
- return AVERROR_PATCHWELCOME;
+ CHECK(FUNC(metadata_unknown)(ctx, rw, ¤t->metadata.unknown));
}
return 0;
--
2.39.0
_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
To unsubscribe, visit link above, or email
ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".
^ permalink raw reply [flat|nested] 6+ messages in thread
* [FFmpeg-devel] [PATCH v2 3/4] av1_parse: Remove unused getbits instance
2023-01-24 22:46 [FFmpeg-devel] [PATCH v2 1/4] cbs_av1: Add tracing headers for metadata types Mark Thompson
2023-01-24 22:46 ` [FFmpeg-devel] [PATCH v2 2/4] cbs_av1: Don't reject unknown metadata Mark Thompson
@ 2023-01-24 22:46 ` Mark Thompson
2023-01-24 22:46 ` [FFmpeg-devel] [PATCH v2 4/4] av1_parse: Don't reject zero-size padding OBUs Mark Thompson
2023-02-23 13:14 ` [FFmpeg-devel] [PATCH v2 1/4] cbs_av1: Add tracing headers for metadata types James Almer
3 siblings, 0 replies; 6+ messages in thread
From: Mark Thompson @ 2023-01-24 22:46 UTC (permalink / raw)
To: ffmpeg-devel
---
libavcodec/av1_parse.c | 6 +-----
libavcodec/av1_parse.h | 3 ---
2 files changed, 1 insertion(+), 8 deletions(-)
diff --git a/libavcodec/av1_parse.c b/libavcodec/av1_parse.c
index 59ea0bc6e7..b1620eb043 100644
--- a/libavcodec/av1_parse.c
+++ b/libavcodec/av1_parse.c
@@ -56,7 +56,7 @@ int ff_av1_extract_obu(AV1OBU *obu, const uint8_t *buf, int length, void *logctx
int ff_av1_packet_split(AV1Packet *pkt, const uint8_t *buf, int length, void *logctx)
{
GetByteContext bc;
- int ret, consumed;
+ int consumed;
bytestream2_init(&bc, buf, length);
pkt->nb_obus = 0;
@@ -94,10 +94,6 @@ int ff_av1_packet_split(AV1Packet *pkt, const uint8_t *buf, int length, void *lo
}
pkt->nb_obus++;
-
- ret = init_get_bits(&obu->gb, obu->data, obu->size_bits);
- if (ret < 0)
- return ret;
}
return 0;
diff --git a/libavcodec/av1_parse.h b/libavcodec/av1_parse.h
index f4a5d2830e..89783e9d44 100644
--- a/libavcodec/av1_parse.h
+++ b/libavcodec/av1_parse.h
@@ -49,9 +49,6 @@ typedef struct AV1OBU {
int raw_size;
const uint8_t *raw_data;
- /** GetBitContext initialized to the start of the payload */
- GetBitContext gb;
-
int type;
int temporal_id;
--
2.39.0
_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
To unsubscribe, visit link above, or email
ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".
^ permalink raw reply [flat|nested] 6+ messages in thread
* [FFmpeg-devel] [PATCH v2 4/4] av1_parse: Don't reject zero-size padding OBUs
2023-01-24 22:46 [FFmpeg-devel] [PATCH v2 1/4] cbs_av1: Add tracing headers for metadata types Mark Thompson
2023-01-24 22:46 ` [FFmpeg-devel] [PATCH v2 2/4] cbs_av1: Don't reject unknown metadata Mark Thompson
2023-01-24 22:46 ` [FFmpeg-devel] [PATCH v2 3/4] av1_parse: Remove unused getbits instance Mark Thompson
@ 2023-01-24 22:46 ` Mark Thompson
2023-02-23 13:14 ` [FFmpeg-devel] [PATCH v2 1/4] cbs_av1: Add tracing headers for metadata types James Almer
3 siblings, 0 replies; 6+ messages in thread
From: Mark Thompson @ 2023-01-24 22:46 UTC (permalink / raw)
To: ffmpeg-devel
Padding OBUs are not required to be nonempty.
---
libavcodec/av1_parse.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/libavcodec/av1_parse.c b/libavcodec/av1_parse.c
index b1620eb043..e2f105a8e2 100644
--- a/libavcodec/av1_parse.c
+++ b/libavcodec/av1_parse.c
@@ -88,7 +88,9 @@ int ff_av1_packet_split(AV1Packet *pkt, const uint8_t *buf, int length, void *lo
obu->size_bits = get_obu_bit_length(obu->data, obu->size, obu->type);
- if (obu->size_bits < 0 || (!obu->size_bits && obu->type != AV1_OBU_TEMPORAL_DELIMITER)) {
+ if (obu->size_bits < 0 ||
+ (obu->size_bits == 0 && (obu->type != AV1_OBU_TEMPORAL_DELIMITER &&
+ obu->type != AV1_OBU_PADDING))) {
av_log(logctx, AV_LOG_ERROR, "Invalid OBU of type %d, skipping.\n", obu->type);
continue;
}
--
2.39.0
_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
To unsubscribe, visit link above, or email
ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [FFmpeg-devel] [PATCH v2 1/4] cbs_av1: Add tracing headers for metadata types
2023-01-24 22:46 [FFmpeg-devel] [PATCH v2 1/4] cbs_av1: Add tracing headers for metadata types Mark Thompson
` (2 preceding siblings ...)
2023-01-24 22:46 ` [FFmpeg-devel] [PATCH v2 4/4] av1_parse: Don't reject zero-size padding OBUs Mark Thompson
@ 2023-02-23 13:14 ` James Almer
2023-05-17 20:49 ` Mark Thompson
3 siblings, 1 reply; 6+ messages in thread
From: James Almer @ 2023-02-23 13:14 UTC (permalink / raw)
To: ffmpeg-devel
On 1/24/2023 7:46 PM, Mark Thompson wrote:
> Make it a little easier to interpret metadata in trace output.
> ---
> libavcodec/cbs_av1_syntax_template.c | 10 ++++++++++
> 1 file changed, 10 insertions(+)
>
> diff --git a/libavcodec/cbs_av1_syntax_template.c b/libavcodec/cbs_av1_syntax_template.c
> index e95925a493..817a0f8ae6 100644
> --- a/libavcodec/cbs_av1_syntax_template.c
> +++ b/libavcodec/cbs_av1_syntax_template.c
> @@ -1843,6 +1843,8 @@ static int FUNC(metadata_hdr_cll)(CodedBitstreamContext *ctx, RWContext *rw,
> {
> int err;
>
> + HEADER("HDR CLL Metadata");
> +
> fb(16, max_cll);
> fb(16, max_fall);
>
> @@ -1854,6 +1856,8 @@ static int FUNC(metadata_hdr_mdcv)(CodedBitstreamContext *ctx, RWContext *rw,
> {
> int err, i;
>
> + HEADER("HDR MDCV Metadata");
> +
> for (i = 0; i < 3; i++) {
> fbs(16, primary_chromaticity_x[i], 1, i);
> fbs(16, primary_chromaticity_y[i], 1, i);
> @@ -1920,6 +1924,8 @@ static int FUNC(metadata_scalability)(CodedBitstreamContext *ctx, RWContext *rw,
> {
> int err;
>
> + HEADER("Scalability Metadata");
> +
> fb(8, scalability_mode_idc);
>
> if (current->scalability_mode_idc == AV1_SCALABILITY_SS)
> @@ -1934,6 +1940,8 @@ static int FUNC(metadata_itut_t35)(CodedBitstreamContext *ctx, RWContext *rw,
> int err;
> size_t i;
>
> + HEADER("ITU-T T.35 Metadata");
> +
> fb(8, itu_t_t35_country_code);
> if (current->itu_t_t35_country_code == 0xff)
> fb(8, itu_t_t35_country_code_extension_byte);
> @@ -1961,6 +1969,8 @@ static int FUNC(metadata_timecode)(CodedBitstreamContext *ctx, RWContext *rw,
> {
> int err;
>
> + HEADER("Timecode Metadata");
> +
> fb(5, counting_type);
> flag(full_timestamp_flag);
> flag(discontinuity_flag);
Set LGTM.
_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
To unsubscribe, visit link above, or email
ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [FFmpeg-devel] [PATCH v2 1/4] cbs_av1: Add tracing headers for metadata types
2023-02-23 13:14 ` [FFmpeg-devel] [PATCH v2 1/4] cbs_av1: Add tracing headers for metadata types James Almer
@ 2023-05-17 20:49 ` Mark Thompson
0 siblings, 0 replies; 6+ messages in thread
From: Mark Thompson @ 2023-05-17 20:49 UTC (permalink / raw)
To: ffmpeg-devel
On 23/02/2023 13:14, James Almer wrote:
> On 1/24/2023 7:46 PM, Mark Thompson wrote:
>> Make it a little easier to interpret metadata in trace output.
>> ---
>> libavcodec/cbs_av1_syntax_template.c | 10 ++++++++++
>> 1 file changed, 10 insertions(+)
>>
>> ...
>
> Set LGTM.
Set applied.
(Apologies for the delay in getting back to this :)
Thanks,
- Mark
_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
To unsubscribe, visit link above, or email
ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2023-05-17 20:49 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-01-24 22:46 [FFmpeg-devel] [PATCH v2 1/4] cbs_av1: Add tracing headers for metadata types Mark Thompson
2023-01-24 22:46 ` [FFmpeg-devel] [PATCH v2 2/4] cbs_av1: Don't reject unknown metadata Mark Thompson
2023-01-24 22:46 ` [FFmpeg-devel] [PATCH v2 3/4] av1_parse: Remove unused getbits instance Mark Thompson
2023-01-24 22:46 ` [FFmpeg-devel] [PATCH v2 4/4] av1_parse: Don't reject zero-size padding OBUs Mark Thompson
2023-02-23 13:14 ` [FFmpeg-devel] [PATCH v2 1/4] cbs_av1: Add tracing headers for metadata types James Almer
2023-05-17 20:49 ` Mark Thompson
Git Inbox Mirror of the ffmpeg-devel mailing list - see https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
This inbox may be cloned and mirrored by anyone:
git clone --mirror https://master.gitmailbox.com/ffmpegdev/0 ffmpegdev/git/0.git
# If you have public-inbox 1.1+ installed, you may
# initialize and index your mirror using the following commands:
public-inbox-init -V2 ffmpegdev ffmpegdev/ https://master.gitmailbox.com/ffmpegdev \
ffmpegdev@gitmailbox.com
public-inbox-index ffmpegdev
Example config snippet for mirrors.
AGPL code for this site: git clone https://public-inbox.org/public-inbox.git