* [FFmpeg-devel] [PATCH 1/2] Revert "avcodec/decode: Fix avcodec parameters when bsfs, are enable by decoder"
@ 2025-06-11 15:25 Andreas Rheinhardt
2025-06-11 16:00 ` Zhao Zhili
2025-06-11 16:51 ` [FFmpeg-devel] [PATCH 3/3] fate/video: Add media100 test Andreas Rheinhardt
0 siblings, 2 replies; 7+ messages in thread
From: Andreas Rheinhardt @ 2025-06-11 15:25 UTC (permalink / raw)
To: FFmpeg development discussions and patches
[-- Attachment #1: Type: text/plain, Size: 29 bytes --]
Patches attached.
- Andreas
[-- Attachment #2: 0001-Revert-avcodec-decode-Fix-avcodec-parameters-when-bs.patch --]
[-- Type: text/x-patch, Size: 1860 bytes --]
From 16581fd7fa6b45e69bb8c2d305739cb60bb798e6 Mon Sep 17 00:00:00 2001
From: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
Date: Wed, 11 Jun 2025 14:52:47 +0200
Subject: [PATCH 1/2] Revert "avcodec/decode: Fix avcodec parameters when bsfs
are enable by decoder"
This reverts commit 1c170613975d3cbcbb5aaa469b4a3cf0df5d4c2b.
The commit intended to provide certain codecs using *_mp4toannexb
bitstream filters with updated (annex B) extradata (even when
the user-supplied one was ISOBMFF), yet BSFs are allowed to change
way more. The media100_to_mjpegb BSF used by the media100 decoder
changes the codec id; the commit being reverted therefore changed
AVCodecContext.codec_id which is an API violation and broke
media100 decoding with the FFmpeg cli tool.
This commit also made changes from the internal BSF externally
visible. extradata is documented to be "owned by the codec and
freed in avcodec_free_context()" which does not include replacing
it with something else in avcodec_open2() and may surprise users
who think that AVCodecContext.extradata is immutable before
avcodec_free_context(). It also incurred a memdup which is completely
unnecessary for most decoders.
Therefore this commit is reverted. The problem it tried to solve
will be solved differently in the next commit.
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
---
libavcodec/decode.c | 3 ---
1 file changed, 3 deletions(-)
diff --git a/libavcodec/decode.c b/libavcodec/decode.c
index ef09568381..2319e76e4b 100644
--- a/libavcodec/decode.c
+++ b/libavcodec/decode.c
@@ -202,9 +202,6 @@ static int decode_bsfs_init(AVCodecContext *avctx)
goto fail;
ret = av_bsf_init(avci->bsf);
- if (ret < 0)
- goto fail;
- ret = avcodec_parameters_to_context(avctx, avci->bsf->par_out);
if (ret < 0)
goto fail;
--
2.45.2
[-- Attachment #3: 0002-avcodec-amfdec-rkmppdec-Use-correct-extradata-with-B.patch --]
[-- Type: text/x-patch, Size: 5438 bytes --]
From 9feb53a9abaad4111a4e8e3c69434af064ef1f65 Mon Sep 17 00:00:00 2001
From: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
Date: Wed, 11 Jun 2025 15:53:18 +0200
Subject: [PATCH 2/2] avcodec/amfdec,rkmppdec: Use correct extradata with BSFs
Otherwise the extradata used would be ISOBMFF if the input is
even though we use the *_mp4toannexb BSFs to convert it to
annex B to feed it to the actual decoder.
(The mediacodec decoders also use said BSFs, yet they process
the extradata in a way that works even when using the ISOBMFF
extradata; in fact, using the converted extradata would break
their check for whether to warn for missing extradata for
the ISOBMFF without-in-band-header profiles.
Furthermore, there are several users of the *_mp4toannexb BSFs
that don't ever touch extradata. They have not been touched.)
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
---
libavcodec/amfdec.c | 8 ++++++--
libavcodec/decode_bsf.h | 42 +++++++++++++++++++++++++++++++++++++++++
libavcodec/rkmppdec.c | 9 ++++++---
3 files changed, 54 insertions(+), 5 deletions(-)
create mode 100644 libavcodec/decode_bsf.h
diff --git a/libavcodec/amfdec.c b/libavcodec/amfdec.c
index 44ccd63aaf..1840a1b3c0 100644
--- a/libavcodec/amfdec.c
+++ b/libavcodec/amfdec.c
@@ -25,6 +25,7 @@
#include "libavutil/mem.h"
#include "libavutil/time.h"
#include "decode.h"
+#include "decode_bsf.h"
#include "libavutil/mastering_display_metadata.h"
#if CONFIG_D3D11VA
@@ -187,9 +188,12 @@ static int amf_init_decoder(AVCodecContext *avctx)
AMF_ASSIGN_PROPERTY_INT64(res, ctx->decoder, AMF_VIDEO_DECODER_SURFACE_COPY, ctx->copy_output);
if (avctx->extradata_size) {
- res = amf_device_ctx->context->pVtbl->AllocBuffer(amf_device_ctx->context, AMF_MEMORY_HOST, avctx->extradata_size, &buffer);
+ const uint8_t *extradata;
+ int extradata_size;
+ ff_decode_get_extradata(avctx, &extradata, &extradata_size);
+ res = amf_device_ctx->context->pVtbl->AllocBuffer(amf_device_ctx->context, AMF_MEMORY_HOST, extradata_size, &buffer);
if (res == AMF_OK) {
- memcpy(buffer->pVtbl->GetNative(buffer), avctx->extradata, avctx->extradata_size);
+ memcpy(buffer->pVtbl->GetNative(buffer), extradata, extradata_size);
AMF_ASSIGN_PROPERTY_INTERFACE(res,ctx->decoder, AMF_VIDEO_DECODER_EXTRADATA, buffer);
buffer->pVtbl->Release(buffer);
buffer = NULL;
diff --git a/libavcodec/decode_bsf.h b/libavcodec/decode_bsf.h
new file mode 100644
index 0000000000..9ea9ab70c1
--- /dev/null
+++ b/libavcodec/decode_bsf.h
@@ -0,0 +1,42 @@
+/*
+ * This file is part of FFmpeg.
+ *
+ * FFmpeg is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * FFmpeg is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with FFmpeg; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+#ifndef AVCODEC_DECODE_BSF_H
+#define AVCODEC_DECODE_BSF_H
+
+#include <stdint.h>
+
+#include "avcodec.h"
+#include "bsf.h"
+#include "internal.h"
+
+/**
+ * Helper function for decoders that may use a BSF that changes extradata.
+ * This function will get the extradata from the BSF.
+ */
+static inline void ff_decode_get_extradata(const AVCodecContext *avctx,
+ const uint8_t **extradata,
+ int *extradata_size)
+{
+ // Given that we unconditionally insert a null BSF when no BSF is
+ // explicitly requested, we can just use the BSF's par_out here.
+ *extradata = avctx->internal->bsf->par_out->extradata;
+ *extradata_size = avctx->internal->bsf->par_out->extradata_size;
+}
+
+#endif /* AVCODEC_DECODE_BSF_H */
diff --git a/libavcodec/rkmppdec.c b/libavcodec/rkmppdec.c
index 54e697664e..dad0e4c25f 100644
--- a/libavcodec/rkmppdec.c
+++ b/libavcodec/rkmppdec.c
@@ -29,6 +29,7 @@
#include "avcodec.h"
#include "codec_internal.h"
#include "decode.h"
+#include "decode_bsf.h"
#include "hwconfig.h"
#include "libavutil/refstruct.h"
#include "libavutil/buffer.h"
@@ -279,9 +280,11 @@ static int rkmpp_send_packet(AVCodecContext *avctx, const AVPacket *avpkt)
// on first packet, send extradata
if (decoder->first_packet) {
if (avctx->extradata_size) {
- ret = rkmpp_write_data(avctx, avctx->extradata,
- avctx->extradata_size,
- avpkt->pts);
+ const uint8_t *extradata;
+ int extradata_size;
+ ff_decode_get_extradata(avctx, &extradata, &extradata_size);
+ ret = rkmpp_write_data(avctx, (uint8_t*)extradata, extradata_size,
+ avpkt->pts);
if (ret) {
av_log(avctx, AV_LOG_ERROR, "Failed to write extradata to decoder (code = %d)\n", ret);
return ret;
--
2.45.2
[-- Attachment #4: Type: text/plain, Size: 251 bytes --]
_______________________________________________
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] 7+ messages in thread
* Re: [FFmpeg-devel] [PATCH 1/2] Revert "avcodec/decode: Fix avcodec parameters when bsfs, are enable by decoder"
2025-06-11 15:25 [FFmpeg-devel] [PATCH 1/2] Revert "avcodec/decode: Fix avcodec parameters when bsfs, are enable by decoder" Andreas Rheinhardt
@ 2025-06-11 16:00 ` Zhao Zhili
2025-06-11 16:40 ` Andreas Rheinhardt
2025-06-15 15:17 ` Andreas Rheinhardt
2025-06-11 16:51 ` [FFmpeg-devel] [PATCH 3/3] fate/video: Add media100 test Andreas Rheinhardt
1 sibling, 2 replies; 7+ messages in thread
From: Zhao Zhili @ 2025-06-11 16:00 UTC (permalink / raw)
To: FFmpeg development discussions and patches
> Otherwise the extradata used would be ISOBMFF if the input is
> even though we use the *_mp4toannexb BSFs to convert it to
> annex B to feed it to the actual decoder.
>
> (The mediacodec decoders also use said BSFs, yet they process
> the extradata in a way that works even when using the ISOBMFF
> extradata; in fact, using the converted extradata would break
> their check for whether to warn for missing extradata for
> the ISOBMFF without-in-band-header profiles.
>
> Furthermore, there are several users of the *_mp4toannexb BSFs
> that don't ever touch extradata. They have not been touched.)
The solution is fragile and easy to be broken. It doesn’t look like a better
solution than avcodec_parameters_to_context.
>
> Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
> ---
> libavcodec/amfdec.c | 8 ++++++--
> libavcodec/decode_bsf.h | 42 +++++++++++++++++++++++++++++++++++++++++
> libavcodec/rkmppdec.c | 9 ++++++---
> 3 files changed, 54 insertions(+), 5 deletions(-)
> create mode 100644 libavcodec/decode_bsf.h
>
> diff --git a/libavcodec/amfdec.c b/libavcodec/amfdec.c
> index 44ccd63aaf..1840a1b3c0 100644
> --- a/libavcodec/amfdec.c
> +++ b/libavcodec/amfdec.c
> @@ -25,6 +25,7 @@
> #include "libavutil/mem.h"
> #include "libavutil/time.h"
> #include "decode.h"
> +#include "decode_bsf.h"
> #include "libavutil/mastering_display_metadata.h"
>
> #if CONFIG_D3D11VA
> @@ -187,9 +188,12 @@ static int amf_init_decoder(AVCodecContext *avctx)
> AMF_ASSIGN_PROPERTY_INT64(res, ctx->decoder, AMF_VIDEO_DECODER_SURFACE_COPY, ctx->copy_output);
>
> if (avctx->extradata_size) {
> - res = amf_device_ctx->context->pVtbl->AllocBuffer(amf_device_ctx->context, AMF_MEMORY_HOST, avctx->extradata_size, &buffer);
> + const uint8_t *extradata;
> + int extradata_size;
> + ff_decode_get_extradata(avctx, &extradata, &extradata_size);
> + res = amf_device_ctx->context->pVtbl->AllocBuffer(amf_device_ctx->context, AMF_MEMORY_HOST, extradata_size, &buffer);
> if (res == AMF_OK) {
> - memcpy(buffer->pVtbl->GetNative(buffer), avctx->extradata, avctx->extradata_size);
> + memcpy(buffer->pVtbl->GetNative(buffer), extradata, extradata_size);
> AMF_ASSIGN_PROPERTY_INTERFACE(res,ctx->decoder, AMF_VIDEO_DECODER_EXTRADATA, buffer);
> buffer->pVtbl->Release(buffer);
> buffer = NULL;
> diff --git a/libavcodec/decode_bsf.h b/libavcodec/decode_bsf.h
> new file mode 100644
> index 0000000000..9ea9ab70c1
> --- /dev/null
> +++ b/libavcodec/decode_bsf.h
> @@ -0,0 +1,42 @@
> +/*
> + * This file is part of FFmpeg.
> + *
> + * FFmpeg is free software; you can redistribute it and/or
> + * modify it under the terms of the GNU Lesser General Public
> + * License as published by the Free Software Foundation; either
> + * version 2.1 of the License, or (at your option) any later version.
> + *
> + * FFmpeg is distributed in the hope that it will be useful,
> + * but WITHOUT ANY WARRANTY; without even the implied warranty of
> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
> + * Lesser General Public License for more details.
> + *
> + * You should have received a copy of the GNU Lesser General Public
> + * License along with FFmpeg; if not, write to the Free Software
> + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
> + */
> +
> +#ifndef AVCODEC_DECODE_BSF_H
> +#define AVCODEC_DECODE_BSF_H
> +
> +#include <stdint.h>
> +
> +#include "avcodec.h"
> +#include "bsf.h"
> +#include "internal.h"
> +
> +/**
> + * Helper function for decoders that may use a BSF that changes extradata.
> + * This function will get the extradata from the BSF.
> + */
> +static inline void ff_decode_get_extradata(const AVCodecContext *avctx,
> + const uint8_t **extradata,
> + int *extradata_size)
> +{
> + // Given that we unconditionally insert a null BSF when no BSF is
> + // explicitly requested, we can just use the BSF's par_out here.
> + *extradata = avctx->internal->bsf->par_out->extradata;
> + *extradata_size = avctx->internal->bsf->par_out->extradata_size;
> +}
> +
> +#endif /* AVCODEC_DECODE_BSF_H */
> diff --git a/libavcodec/rkmppdec.c b/libavcodec/rkmppdec.c
> index 54e697664e..dad0e4c25f 100644
> --- a/libavcodec/rkmppdec.c
> +++ b/libavcodec/rkmppdec.c
> @@ -29,6 +29,7 @@
> #include "avcodec.h"
> #include "codec_internal.h"
> #include "decode.h"
> +#include "decode_bsf.h"
> #include "hwconfig.h"
> #include "libavutil/refstruct.h"
> #include "libavutil/buffer.h"
> @@ -279,9 +280,11 @@ static int rkmpp_send_packet(AVCodecContext *avctx, const AVPacket *avpkt)
> // on first packet, send extradata
> if (decoder->first_packet) {
> if (avctx->extradata_size) {
> - ret = rkmpp_write_data(avctx, avctx->extradata,
> - avctx->extradata_size,
> - avpkt->pts);
> + const uint8_t *extradata;
> + int extradata_size;
> + ff_decode_get_extradata(avctx, &extradata, &extradata_size);
> + ret = rkmpp_write_data(avctx, (uint8_t*)extradata, extradata_size,
> + avpkt->pts);
> if (ret) {
> av_log(avctx, AV_LOG_ERROR, "Failed to write extradata to decoder (code = %d)\n", ret);
> return ret;
> --
> 2.45.2
>
_______________________________________________
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] 7+ messages in thread
* Re: [FFmpeg-devel] [PATCH 1/2] Revert "avcodec/decode: Fix avcodec parameters when bsfs, are enable by decoder"
2025-06-11 16:00 ` Zhao Zhili
@ 2025-06-11 16:40 ` Andreas Rheinhardt
2025-06-15 15:17 ` Andreas Rheinhardt
1 sibling, 0 replies; 7+ messages in thread
From: Andreas Rheinhardt @ 2025-06-11 16:40 UTC (permalink / raw)
To: ffmpeg-devel
Zhao Zhili:
>> Otherwise the extradata used would be ISOBMFF if the input is
>> even though we use the *_mp4toannexb BSFs to convert it to
>> annex B to feed it to the actual decoder.
>>
>> (The mediacodec decoders also use said BSFs, yet they process
>> the extradata in a way that works even when using the ISOBMFF
>> extradata; in fact, using the converted extradata would break
>> their check for whether to warn for missing extradata for
>> the ISOBMFF without-in-band-header profiles.
>>
>> Furthermore, there are several users of the *_mp4toannexb BSFs
>> that don't ever touch extradata. They have not been touched.)
>
> The solution is fragile and easy to be broken. It doesn’t look like a better
> solution than avcodec_parameters_to_context.
>
What is fragile here? I consider avcodec_parameters_to_context() to be
fragile, as your solution involves maintaining a list of stuff that
needs to be checked for whether avcodec_parameters_to_context() should
be called (future BSFs may convert between different flavors of a codec
and need to change the codec tag accordingly (actually, the
*_mp4toannexb BSFs should reset the codec tag, so that it no longer says
"no in-band extradata"), yet changing the codec tag (except uppercasing
it) is not allowed for the user-facing AVCodecContext)).
Furthermore, discarding the info whether the extradata was ISOBMFF is
not good at all, as the mediacodec decoders show: It implicitly disables
the warning for missing extradata.
>>
>> Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
>> ---
>> libavcodec/amfdec.c | 8 ++++++--
>> libavcodec/decode_bsf.h | 42 +++++++++++++++++++++++++++++++++++++++++
>> libavcodec/rkmppdec.c | 9 ++++++---
>> 3 files changed, 54 insertions(+), 5 deletions(-)
>> create mode 100644 libavcodec/decode_bsf.h
>>
>> diff --git a/libavcodec/amfdec.c b/libavcodec/amfdec.c
>> index 44ccd63aaf..1840a1b3c0 100644
>> --- a/libavcodec/amfdec.c
>> +++ b/libavcodec/amfdec.c
>> @@ -25,6 +25,7 @@
>> #include "libavutil/mem.h"
>> #include "libavutil/time.h"
>> #include "decode.h"
>> +#include "decode_bsf.h"
>> #include "libavutil/mastering_display_metadata.h"
>>
>> #if CONFIG_D3D11VA
>> @@ -187,9 +188,12 @@ static int amf_init_decoder(AVCodecContext *avctx)
>> AMF_ASSIGN_PROPERTY_INT64(res, ctx->decoder, AMF_VIDEO_DECODER_SURFACE_COPY, ctx->copy_output);
>>
>> if (avctx->extradata_size) {
>> - res = amf_device_ctx->context->pVtbl->AllocBuffer(amf_device_ctx->context, AMF_MEMORY_HOST, avctx->extradata_size, &buffer);
>> + const uint8_t *extradata;
>> + int extradata_size;
>> + ff_decode_get_extradata(avctx, &extradata, &extradata_size);
>> + res = amf_device_ctx->context->pVtbl->AllocBuffer(amf_device_ctx->context, AMF_MEMORY_HOST, extradata_size, &buffer);
>> if (res == AMF_OK) {
>> - memcpy(buffer->pVtbl->GetNative(buffer), avctx->extradata, avctx->extradata_size);
>> + memcpy(buffer->pVtbl->GetNative(buffer), extradata, extradata_size);
>> AMF_ASSIGN_PROPERTY_INTERFACE(res,ctx->decoder, AMF_VIDEO_DECODER_EXTRADATA, buffer);
>> buffer->pVtbl->Release(buffer);
>> buffer = NULL;
>> diff --git a/libavcodec/decode_bsf.h b/libavcodec/decode_bsf.h
>> new file mode 100644
>> index 0000000000..9ea9ab70c1
>> --- /dev/null
>> +++ b/libavcodec/decode_bsf.h
>> @@ -0,0 +1,42 @@
>> +/*
>> + * This file is part of FFmpeg.
>> + *
>> + * FFmpeg is free software; you can redistribute it and/or
>> + * modify it under the terms of the GNU Lesser General Public
>> + * License as published by the Free Software Foundation; either
>> + * version 2.1 of the License, or (at your option) any later version.
>> + *
>> + * FFmpeg is distributed in the hope that it will be useful,
>> + * but WITHOUT ANY WARRANTY; without even the implied warranty of
>> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
>> + * Lesser General Public License for more details.
>> + *
>> + * You should have received a copy of the GNU Lesser General Public
>> + * License along with FFmpeg; if not, write to the Free Software
>> + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
>> + */
>> +
>> +#ifndef AVCODEC_DECODE_BSF_H
>> +#define AVCODEC_DECODE_BSF_H
>> +
>> +#include <stdint.h>
>> +
>> +#include "avcodec.h"
>> +#include "bsf.h"
>> +#include "internal.h"
>> +
>> +/**
>> + * Helper function for decoders that may use a BSF that changes extradata.
>> + * This function will get the extradata from the BSF.
>> + */
>> +static inline void ff_decode_get_extradata(const AVCodecContext *avctx,
>> + const uint8_t **extradata,
>> + int *extradata_size)
>> +{
>> + // Given that we unconditionally insert a null BSF when no BSF is
>> + // explicitly requested, we can just use the BSF's par_out here.
>> + *extradata = avctx->internal->bsf->par_out->extradata;
>> + *extradata_size = avctx->internal->bsf->par_out->extradata_size;
>> +}
>> +
>> +#endif /* AVCODEC_DECODE_BSF_H */
>> diff --git a/libavcodec/rkmppdec.c b/libavcodec/rkmppdec.c
>> index 54e697664e..dad0e4c25f 100644
>> --- a/libavcodec/rkmppdec.c
>> +++ b/libavcodec/rkmppdec.c
>> @@ -29,6 +29,7 @@
>> #include "avcodec.h"
>> #include "codec_internal.h"
>> #include "decode.h"
>> +#include "decode_bsf.h"
>> #include "hwconfig.h"
>> #include "libavutil/refstruct.h"
>> #include "libavutil/buffer.h"
>> @@ -279,9 +280,11 @@ static int rkmpp_send_packet(AVCodecContext *avctx, const AVPacket *avpkt)
>> // on first packet, send extradata
>> if (decoder->first_packet) {
>> if (avctx->extradata_size) {
>> - ret = rkmpp_write_data(avctx, avctx->extradata,
>> - avctx->extradata_size,
>> - avpkt->pts);
>> + const uint8_t *extradata;
>> + int extradata_size;
>> + ff_decode_get_extradata(avctx, &extradata, &extradata_size);
>> + ret = rkmpp_write_data(avctx, (uint8_t*)extradata, extradata_size,
>> + avpkt->pts);
>> if (ret) {
>> av_log(avctx, AV_LOG_ERROR, "Failed to write extradata to decoder (code = %d)\n", ret);
>> return ret;
>> --
>> 2.45.2
>>
_______________________________________________
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] 7+ messages in thread
* [FFmpeg-devel] [PATCH 3/3] fate/video: Add media100 test
2025-06-11 15:25 [FFmpeg-devel] [PATCH 1/2] Revert "avcodec/decode: Fix avcodec parameters when bsfs, are enable by decoder" Andreas Rheinhardt
2025-06-11 16:00 ` Zhao Zhili
@ 2025-06-11 16:51 ` Andreas Rheinhardt
2025-06-12 0:28 ` compn
1 sibling, 1 reply; 7+ messages in thread
From: Andreas Rheinhardt @ 2025-06-11 16:51 UTC (permalink / raw)
To: ffmpeg-devel
[-- Attachment #1: Type: text/plain, Size: 200 bytes --]
Andreas Rheinhardt:
> Patches attached.
>
> - Andreas
>
And here is a test. The file for the test is at
https://0x0.st/8E1C.mov/media100.mov and should be put into the mjpegb
directory.
- Andreas
[-- Attachment #2: 0003-fate-video-Add-media100-test.patch --]
[-- Type: text/x-patch, Size: 2209 bytes --]
From 349fd65df1d681360bebf97f57b16098641c3a7f Mon Sep 17 00:00:00 2001
From: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
Date: Wed, 11 Jun 2025 18:32:11 +0200
Subject: [PATCH 3/3] fate/video: Add media100 test
Tests both the Media 100 decoder (using the media100_to_mjpegb BSF
implicitly) as well as using said BSF, followed by the MJPEGB decoder.
(We currently hit a bug when remuxing: The demuxer treats compressorname
as encoded in a Mac character encoding (Mac OS Roman?) and converts
it to UTF-8, yet the muxer just writes it.)
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
---
tests/fate/video.mak | 4 ++++
tests/ref/fate/media100 | 14 ++++++++++++++
2 files changed, 18 insertions(+)
create mode 100644 tests/ref/fate/media100
diff --git a/tests/fate/video.mak b/tests/fate/video.mak
index dd886843e7..cd7008dcd0 100644
--- a/tests/fate/video.mak
+++ b/tests/fate/video.mak
@@ -251,6 +251,10 @@ fate-mdec: CMD = framecrc -idct simple -i $(TARGET_SAMPLES)/ea-dct/NFS2Esprit-pa
FATE_VIDEO-$(call FRAMECRC, STR, MDEC) += fate-mdec-v3
fate-mdec-v3: CMD = framecrc -idct simple -i $(TARGET_SAMPLES)/psx-str/abc000_cut.str -an
+FATE_VIDEO-$(call REMUX, MOV, MEDIA100_TO_MJPEGB_BSF MEDIA100_DECODER MJPEGB_DECODER) += fate-media100
+fate-media100: CMD = transcode mov $(TARGET_SAMPLES)/mjpegb/media100.mov mov \
+ "-map 0 -map 0 -c copy -bsf:v:0 media100_to_mjpegb -tag:v:0 mjpb" "-map 0"
+
FATE_VIDEO-$(call FRAMECRC, MSNWC_TCP, MIMIC) += fate-mimic
fate-mimic: CMD = framecrc -idct simple -i $(TARGET_SAMPLES)/mimic/mimic2-womanloveffmpeg.cam
diff --git a/tests/ref/fate/media100 b/tests/ref/fate/media100
new file mode 100644
index 0000000000..2fe5a0bffd
--- /dev/null
+++ b/tests/ref/fate/media100
@@ -0,0 +1,14 @@
+36ca02da1b757454a710e0879d32e19f *tests/data/fate/media100.mov
+155218 tests/data/fate/media100.mov
+#tb 0: 1/25
+#media_type 0: video
+#codec_id 0: rawvideo
+#dimensions 0: 768x576
+#sar 0: 0/1
+#tb 1: 1/25
+#media_type 1: video
+#codec_id 1: rawvideo
+#dimensions 1: 768x576
+#sar 1: 0/1
+0, 0, 0, 1, 884736, 0x22304315
+1, 0, 0, 1, 884736, 0x22304315
--
2.45.2
[-- Attachment #3: Type: text/plain, Size: 251 bytes --]
_______________________________________________
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] 7+ messages in thread
* Re: [FFmpeg-devel] [PATCH 3/3] fate/video: Add media100 test
2025-06-11 16:51 ` [FFmpeg-devel] [PATCH 3/3] fate/video: Add media100 test Andreas Rheinhardt
@ 2025-06-12 0:28 ` compn
0 siblings, 0 replies; 7+ messages in thread
From: compn @ 2025-06-12 0:28 UTC (permalink / raw)
To: ffmpeg-devel
On Wed, 11 Jun 2025 18:51:58 +0200, Andreas Rheinhardt wrote:
> Andreas Rheinhardt:
> > Patches attached.
> >
> > - Andreas
> >
>
> And here is a test. The file for the test is at
> https://0x0.st/8E1C.mov/media100.mov and should be put into the mjpegb
> directory.
>
> - Andreas
thanks. added to fate-suite/mjpegb
-compn
_______________________________________________
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] 7+ messages in thread
* Re: [FFmpeg-devel] [PATCH 1/2] Revert "avcodec/decode: Fix avcodec parameters when bsfs, are enable by decoder"
2025-06-11 16:00 ` Zhao Zhili
2025-06-11 16:40 ` Andreas Rheinhardt
@ 2025-06-15 15:17 ` Andreas Rheinhardt
2025-06-15 15:22 ` Zhao Zhili
1 sibling, 1 reply; 7+ messages in thread
From: Andreas Rheinhardt @ 2025-06-15 15:17 UTC (permalink / raw)
To: ffmpeg-devel
Zhao Zhili:
>> Otherwise the extradata used would be ISOBMFF if the input is
>> even though we use the *_mp4toannexb BSFs to convert it to
>> annex B to feed it to the actual decoder.
>>
>> (The mediacodec decoders also use said BSFs, yet they process
>> the extradata in a way that works even when using the ISOBMFF
>> extradata; in fact, using the converted extradata would break
>> their check for whether to warn for missing extradata for
>> the ISOBMFF without-in-band-header profiles.
>>
>> Furthermore, there are several users of the *_mp4toannexb BSFs
>> that don't ever touch extradata. They have not been touched.)
>
> The solution is fragile and easy to be broken. It doesn’t look like a better
> solution than avcodec_parameters_to_context.
>
Do you still think this way in light of my reply
(https://ffmpeg.org/pipermail/ffmpeg-devel/2025-June/344986.html)?
- Andreas
_______________________________________________
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] 7+ messages in thread
* Re: [FFmpeg-devel] [PATCH 1/2] Revert "avcodec/decode: Fix avcodec parameters when bsfs, are enable by decoder"
2025-06-15 15:17 ` Andreas Rheinhardt
@ 2025-06-15 15:22 ` Zhao Zhili
0 siblings, 0 replies; 7+ messages in thread
From: Zhao Zhili @ 2025-06-15 15:22 UTC (permalink / raw)
To: FFmpeg development discussions and patches
> On Jun 15, 2025, at 23:17, Andreas Rheinhardt <andreas.rheinhardt@outlook.com> wrote:
>
> Zhao Zhili:
>>> Otherwise the extradata used would be ISOBMFF if the input is
>>> even though we use the *_mp4toannexb BSFs to convert it to
>>> annex B to feed it to the actual decoder.
>>>
>>> (The mediacodec decoders also use said BSFs, yet they process
>>> the extradata in a way that works even when using the ISOBMFF
>>> extradata; in fact, using the converted extradata would break
>>> their check for whether to warn for missing extradata for
>>> the ISOBMFF without-in-band-header profiles.
>>>
>>> Furthermore, there are several users of the *_mp4toannexb BSFs
>>> that don't ever touch extradata. They have not been touched.)
>>
>> The solution is fragile and easy to be broken. It doesn’t look like a better
>> solution than avcodec_parameters_to_context.
>>
>
> Do you still think this way in light of my reply
> (https://ffmpeg.org/pipermail/ffmpeg-devel/2025-June/344986.html)?
>
Please apply.
> - Andreas
>
> _______________________________________________
> 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".
_______________________________________________
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] 7+ messages in thread
end of thread, other threads:[~2025-06-15 15:23 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2025-06-11 15:25 [FFmpeg-devel] [PATCH 1/2] Revert "avcodec/decode: Fix avcodec parameters when bsfs, are enable by decoder" Andreas Rheinhardt
2025-06-11 16:00 ` Zhao Zhili
2025-06-11 16:40 ` Andreas Rheinhardt
2025-06-15 15:17 ` Andreas Rheinhardt
2025-06-15 15:22 ` Zhao Zhili
2025-06-11 16:51 ` [FFmpeg-devel] [PATCH 3/3] fate/video: Add media100 test Andreas Rheinhardt
2025-06-12 0:28 ` compn
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