diff mbox

[FFmpeg-devel,13/25] avcodec/mjpegenc: add support for non-YUVJ formats

Message ID 20171216101245.26977-13-onemda@gmail.com
State Superseded
Headers show

Commit Message

Paul B Mahol Dec. 16, 2017, 10:12 a.m. UTC
Signed-off-by: Paul B Mahol <onemda@gmail.com>
---
 libavcodec/mjpegenc.c    | 5 ++++-
 tests/lavf-regression.sh | 2 +-
 2 files changed, 5 insertions(+), 2 deletions(-)

Comments

Michael Niedermayer Dec. 16, 2017, 9:38 p.m. UTC | #1
On Sat, Dec 16, 2017 at 11:12:33AM +0100, Paul B Mahol wrote:
> Signed-off-by: Paul B Mahol <onemda@gmail.com>
> ---
>  libavcodec/mjpegenc.c    | 5 ++++-
>  tests/lavf-regression.sh | 2 +-
>  2 files changed, 5 insertions(+), 2 deletions(-)

this breaks jpg encoding, (looks like colorspace convert/negotiate failing somehow)
for example:
./ffmpeg -ss 1 -i ~/tickets/4395/small_test2.dv -vframes 1 file.jpg

fails with:
[mjpeg @ 0x334dea0] colorspace not supported in jpeg
Error initializing output stream 0:0 -- Error while opening encoder for output stream #0:0 - maybe incorrect parameters such as bit_rate, rate, width or height
Conversion failed!

input should be here:
http://samples.mplayerhq.hu/DV-raw/small_test2.dv

[...]
diff mbox

Patch

diff --git a/libavcodec/mjpegenc.c b/libavcodec/mjpegenc.c
index d2fcb8e191..c31985efd3 100644
--- a/libavcodec/mjpegenc.c
+++ b/libavcodec/mjpegenc.c
@@ -415,8 +415,10 @@  AVCodec ff_mjpeg_encoder = {
     .close          = ff_mpv_encode_end,
     .capabilities   = AV_CODEC_CAP_SLICE_THREADS | AV_CODEC_CAP_FRAME_THREADS | AV_CODEC_CAP_INTRA_ONLY,
     .pix_fmts       = (const enum AVPixelFormat[]) {
+        AV_PIX_FMT_YUV420P, AV_PIX_FMT_YUV422P, AV_PIX_FMT_YUV444P,
         AV_PIX_FMT_YUVJ420P, AV_PIX_FMT_YUVJ422P, AV_PIX_FMT_YUVJ444P, AV_PIX_FMT_NONE
     },
+    .color_ranges   = (const enum AVColorRange[]){AVCOL_RANGE_JPEG, AVCOL_RANGE_MPEG, AVCOL_RANGE_UNSPECIFIED},
     .priv_class     = &mjpeg_class,
 };
 #endif
@@ -439,8 +441,9 @@  AVCodec ff_amv_encoder = {
     .encode2        = amv_encode_picture,
     .close          = ff_mpv_encode_end,
     .pix_fmts       = (const enum AVPixelFormat[]) {
-        AV_PIX_FMT_YUVJ420P, AV_PIX_FMT_NONE
+        AV_PIX_FMT_YUV420P, AV_PIX_FMT_YUVJ420P, AV_PIX_FMT_NONE
     },
+    .color_ranges   = (const enum AVColorRange[]){AVCOL_RANGE_JPEG, AVCOL_RANGE_UNSPECIFIED},
     .priv_class     = &amv_class,
 };
 #endif
diff --git a/tests/lavf-regression.sh b/tests/lavf-regression.sh
index 45c877e4ac..b03d5ac2e7 100755
--- a/tests/lavf-regression.sh
+++ b/tests/lavf-regression.sh
@@ -376,7 +376,7 @@  do_audio_only rso
 fi
 
 if [ -n "$do_smjpeg" ] ; then
-do_lavf smjpeg "" "-f smjpeg"
+do_lavf smjpeg "" "-vf format=yuv420p:pc -f smjpeg"
 fi
 
 if [ -n "$do_sox" ] ; then