[FFmpeg-cvslog] ffmpeg: stop accessing private AVStream.codec_info_nb_frames
ffmpeg | branch: master | James Almer | Thu Apr 29 10:30:56 2021 -0300| [4d3474432f8f23e8e97f3e2ef363a6906d8d211e] | committer: James Almer ffmpeg: stop accessing private AVStream.codec_info_nb_frames Use AVSTREAM_EVENT_FLAG_NEW_PACKETS instead, which should provide the same information in this case. Finishes removing all uses of this field as started by 87f0c8280c. Signed-off-by: James Almer > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=4d3474432f8f23e8e97f3e2ef363a6906d8d211e --- fftools/ffmpeg_opt.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/fftools/ffmpeg_opt.c b/fftools/ffmpeg_opt.c index c0b9f023bd..849d24b16d 100644 --- a/fftools/ffmpeg_opt.c +++ b/fftools/ffmpeg_opt.c @@ -2272,7 +2272,8 @@ static int open_output_file(OptionsContext *o, const char *filename) for (i = 0; i < nb_input_streams; i++) { int score; ist = input_streams[i]; -score = ist->st->codecpar->channels + 1*!!ist->st->codec_info_nb_frames +score = ist->st->codecpar->channels ++ 1 * !!(ist->st->event_flags & AVSTREAM_EVENT_FLAG_NEW_PACKETS) + 500*!!(ist->st->disposition & AV_DISPOSITION_DEFAULT); if (ist->user_set_discard == AVDISCARD_ALL) continue; ___ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog To unsubscribe, visit link above, or email ffmpeg-cvslog-requ...@ffmpeg.org with subject "unsubscribe".
[FFmpeg-cvslog] Revert "avcodec/mjpegdec: fix SOF check in EOI"
ffmpeg | branch: master | Michael Niedermayer | Sun May 2 14:44:00 2021 +0200| [4b1e1f706b15f1ed68e351c5924d28c15d2fc763] | committer: Michael Niedermayer Revert "avcodec/mjpegdec: fix SOF check in EOI" This reverts commit fb5e2d71127ccae19c3f80ec363bb67d1871cb74. > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=4b1e1f706b15f1ed68e351c5924d28c15d2fc763 --- libavcodec/mjpegdec.c | 7 +-- 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/libavcodec/mjpegdec.c b/libavcodec/mjpegdec.c index c829172200..16aed078f6 100644 --- a/libavcodec/mjpegdec.c +++ b/libavcodec/mjpegdec.c @@ -2560,16 +2560,11 @@ eoi_parser: s->progressive && s->cur_scan && s->got_picture) mjpeg_idct_scan_progressive_ac(s); s->cur_scan = 0; -if (!s->seen_sof) { +if (!s->got_picture) { av_log(avctx, AV_LOG_WARNING, "Found EOI before any SOF, ignoring\n"); break; } -if (!s->got_picture && avctx->skip_frame != AVDISCARD_ALL) { -av_log(avctx, AV_LOG_WARNING, - "Found EOI before any SOS, ignoring\n"); -break; -} if (s->interlaced) { s->bottom_field ^= 1; /* if not bottom field, do not output image yet */ ___ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog To unsubscribe, visit link above, or email ffmpeg-cvslog-requ...@ffmpeg.org with subject "unsubscribe".
[FFmpeg-cvslog] avcodec/mjpegdec: Decode to PAL8 independant of the location of LSE
ffmpeg | branch: master | Michael Niedermayer | Sun May 2 15:47:36 2021 +0200| [7f6ada4eea089bbcb3ac3ff5d7e8c55c98b47740] | committer: Michael Niedermayer avcodec/mjpegdec: Decode to PAL8 independant of the location of LSE This simply performs a 2nd pass if a LSE is encountered with GRAY8 Fixes: tickets/3933/128.jls Signed-off-by: Michael Niedermayer > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=7f6ada4eea089bbcb3ac3ff5d7e8c55c98b47740 --- libavcodec/jpeglsdec.c | 6 -- libavcodec/mjpegdec.c | 10 +++--- libavcodec/mjpegdec.h | 1 + tests/fate/image.mak | 2 +- 4 files changed, 13 insertions(+), 6 deletions(-) diff --git a/libavcodec/jpeglsdec.c b/libavcodec/jpeglsdec.c index d79bbe1ee3..bd9224d97d 100644 --- a/libavcodec/jpeglsdec.c +++ b/libavcodec/jpeglsdec.c @@ -118,8 +118,10 @@ int ff_jpegls_decode_lse(MJpegDecodeContext *s) shift = 8 - s->avctx->bits_per_raw_sample; } -s->picture_ptr->format = -s->avctx->pix_fmt = AV_PIX_FMT_PAL8; +s->force_pal8 = 1; +if (!pal) +return 1; + for (i=s->palette_index; i<=maxtab; i++) { uint8_t k = i << shift; pal[k] = 0; diff --git a/libavcodec/mjpegdec.c b/libavcodec/mjpegdec.c index 7c66ff8637..0691148027 100644 --- a/libavcodec/mjpegdec.c +++ b/libavcodec/mjpegdec.c @@ -582,7 +582,7 @@ int ff_mjpeg_decode_sof(MJpegDecodeContext *s) case 0x4300: case 0x4400: if(s->bits <= 8) -s->avctx->pix_fmt = AV_PIX_FMT_GRAY8; +s->avctx->pix_fmt = s->force_pal8 ? AV_PIX_FMT_PAL8 : AV_PIX_FMT_GRAY8; else s->avctx->pix_fmt = AV_PIX_FMT_GRAY16; break; @@ -681,7 +681,7 @@ int ff_mjpeg_decode_sof(MJpegDecodeContext *s) } else if (s->nb_components != 1) { av_log(s->avctx, AV_LOG_ERROR, "Unsupported number of components %d\n", s->nb_components); return AVERROR_PATCHWELCOME; -} else if (s->palette_index && s->bits <= 8) +} else if (s->palette_index && s->bits <= 8 || s->force_pal8) s->avctx->pix_fmt = AV_PIX_FMT_PAL8; else if (s->bits <= 8) s->avctx->pix_fmt = AV_PIX_FMT_GRAY8; @@ -2398,6 +2398,8 @@ int ff_mjpeg_receive_frame(AVCodecContext *avctx, AVFrame *frame) int ret = 0; int is16bit; +s->force_pal8 = 0; + if (avctx->codec_id == AV_CODEC_ID_SMVJPEG && s->smv_next_frame > 0) return smv_process_frame(avctx, frame); @@ -2411,7 +2413,7 @@ int ff_mjpeg_receive_frame(AVCodecContext *avctx, AVFrame *frame) ret = mjpeg_get_packet(avctx); if (ret < 0) return ret; - +redo_for_pal8: buf_ptr = s->pkt->data; buf_end = s->pkt->data + s->pkt->size; while (buf_ptr < buf_end) { @@ -2542,6 +2544,8 @@ int ff_mjpeg_receive_frame(AVCodecContext *avctx, AVFrame *frame) if (!CONFIG_JPEGLS_DECODER || (ret = ff_jpegls_decode_lse(s)) < 0) goto fail; +if (ret == 1) +goto redo_for_pal8; break; case EOI: eoi_parser: diff --git a/libavcodec/mjpegdec.h b/libavcodec/mjpegdec.h index 2400a179f1..648dd714e1 100644 --- a/libavcodec/mjpegdec.h +++ b/libavcodec/mjpegdec.h @@ -117,6 +117,7 @@ typedef struct MJpegDecodeContext { uint8_t *last_nnz[MAX_COMPONENTS]; uint64_t coefs_finished[MAX_COMPONENTS]; ///< bitmask of which coefs have been completely decoded (progressive mode) int palette_index; +int force_pal8; ScanTable scantable; BlockDSPContext bdsp; HpelDSPContext hdsp; diff --git a/tests/fate/image.mak b/tests/fate/image.mak index d8316fddc3..07316542e1 100644 --- a/tests/fate/image.mak +++ b/tests/fate/image.mak @@ -350,7 +350,7 @@ fate-jpegls-5bpc: CMD = framecrc -idct simple -i $(TARGET_SAMPLES)/jpegls/32.jls FATE_JPEGLS += fate-jpegls-7bpc fate-jpegls-7bpc: CMD = framecrc -idct simple -i $(TARGET_SAMPLES)/jpegls/128.jls -pix_fmt rgb24 -vf scale -#FATE_JPEGLS-$(call DEMDEC, IMAGE2, JPEGLS) += $(FATE_JPEGLS) +FATE_JPEGLS-$(call DEMDEC, IMAGE2, JPEGLS) += $(FATE_JPEGLS) FATE_IMAGE += $(FATE_JPEGLS-yes) fate-jpegls: $(FATE_JPEGLS-yes) ___ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog To unsubscribe, visit link above, or email ffmpeg-cvslog-requ...@ffmpeg.org with subject "unsubscribe".
[FFmpeg-cvslog] avcodec/mjpegdec: Clear palette to avoid uninitialized entries
ffmpeg | branch: master | Michael Niedermayer | Mon May 3 21:03:07 2021 +0200| [c83f60d7d7818948d014d6f9ab0a2e77371bb439] | committer: Michael Niedermayer avcodec/mjpegdec: Clear palette to avoid uninitialized entries Suggested-by: James Signed-off-by: Michael Niedermayer > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=c83f60d7d7818948d014d6f9ab0a2e77371bb439 --- libavcodec/mjpegdec.c | 4 1 file changed, 4 insertions(+) diff --git a/libavcodec/mjpegdec.c b/libavcodec/mjpegdec.c index 0691148027..500cd373bc 100644 --- a/libavcodec/mjpegdec.c +++ b/libavcodec/mjpegdec.c @@ -730,6 +730,10 @@ int ff_mjpeg_decode_sof(MJpegDecodeContext *s) s->picture_ptr->key_frame = 1; s->got_picture= 1; +// Lets clear the palette to avoid leaving uninitialized values in it +if (s->avctx->pix_fmt == AV_PIX_FMT_PAL8) +memset(s->picture_ptr->data[1], 0, 1024); + for (i = 0; i < 4; i++) s->linesize[i] = s->picture_ptr->linesize[i] << s->interlaced; ___ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog To unsubscribe, visit link above, or email ffmpeg-cvslog-requ...@ffmpeg.org with subject "unsubscribe".
[FFmpeg-cvslog] Revert "avcodec/mjpegdec: postpone calling ff_get_buffer() until the SOS marker"
ffmpeg | branch: master | Michael Niedermayer | Sun May 2 14:44:03 2021 +0200| [9fd06a363987aa56a79db2532266c6218b1ca343] | committer: Michael Niedermayer Revert "avcodec/mjpegdec: postpone calling ff_get_buffer() until the SOS marker" This also temporary disables fate-jpegls which is re-enabled in the next commit This reverts commit c8197f73e684b0edc450f3dc2b2b4b3fb9dedd0d. > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=9fd06a363987aa56a79db2532266c6218b1ca343 --- libavcodec/jpeglsdec.c | 6 ++-- libavcodec/mjpegbdec.c | 1 - libavcodec/mjpegdec.c | 83 +- libavcodec/mjpegdec.h | 3 -- libavcodec/mxpegdec.c | 2 +- tests/fate/image.mak | 2 +- 6 files changed, 40 insertions(+), 57 deletions(-) diff --git a/libavcodec/jpeglsdec.c b/libavcodec/jpeglsdec.c index bf51d63c3a..d79bbe1ee3 100644 --- a/libavcodec/jpeglsdec.c +++ b/libavcodec/jpeglsdec.c @@ -108,8 +108,9 @@ int ff_jpegls_decode_lse(MJpegDecodeContext *s) if (s->palette_index > maxtab) return AVERROR_INVALIDDATA; -if (s->avctx->pix_fmt == AV_PIX_FMT_GRAY8 || s->avctx->pix_fmt == AV_PIX_FMT_PAL8) { -uint32_t *pal = s->palette; +if ((s->avctx->pix_fmt == AV_PIX_FMT_GRAY8 || s->avctx->pix_fmt == AV_PIX_FMT_PAL8) && +(s->picture_ptr->format == AV_PIX_FMT_GRAY8 || s->picture_ptr->format == AV_PIX_FMT_PAL8)) { +uint32_t *pal = (uint32_t *)s->picture_ptr->data[1]; int shift = 0; if (s->avctx->bits_per_raw_sample > 0 && s->avctx->bits_per_raw_sample < 8) { @@ -117,6 +118,7 @@ int ff_jpegls_decode_lse(MJpegDecodeContext *s) shift = 8 - s->avctx->bits_per_raw_sample; } +s->picture_ptr->format = s->avctx->pix_fmt = AV_PIX_FMT_PAL8; for (i=s->palette_index; i<=maxtab; i++) { uint8_t k = i << shift; diff --git a/libavcodec/mjpegbdec.c b/libavcodec/mjpegbdec.c index abc607176a..87eebb8771 100644 --- a/libavcodec/mjpegbdec.c +++ b/libavcodec/mjpegbdec.c @@ -55,7 +55,6 @@ static int mjpegb_decode_frame(AVCodecContext *avctx, buf_ptr = buf; buf_end = buf + buf_size; -s->seen_sof = 0; s->got_picture = 0; s->adobe_transform = -1; diff --git a/libavcodec/mjpegdec.c b/libavcodec/mjpegdec.c index 16aed078f6..7c66ff8637 100644 --- a/libavcodec/mjpegdec.c +++ b/libavcodec/mjpegdec.c @@ -138,7 +138,6 @@ av_cold int ff_mjpeg_decode_init(AVCodecContext *avctx) s->buffer= NULL; s->start_code= -1; s->first_picture = 1; -s->seen_sof = 0; s->got_picture = 0; s->orig_height= avctx->coded_height; avctx->chroma_sample_location = AVCHROMA_LOC_CENTER; @@ -430,7 +429,6 @@ int ff_mjpeg_decode_sof(MJpegDecodeContext *s) memcpy(s->h_count, h_count, sizeof(h_count)); memcpy(s->v_count, v_count, sizeof(v_count)); s->interlaced = 0; -s->seen_sof = 0; s->got_picture = 0; /* test interlaced mode */ @@ -683,13 +681,11 @@ int ff_mjpeg_decode_sof(MJpegDecodeContext *s) } else if (s->nb_components != 1) { av_log(s->avctx, AV_LOG_ERROR, "Unsupported number of components %d\n", s->nb_components); return AVERROR_PATCHWELCOME; -} else if (s->bits <= 8) { -avpriv_set_systematic_pal2(s->palette, s->avctx->pix_fmt); -if (s->palette_index) -s->avctx->pix_fmt = AV_PIX_FMT_PAL8; -else -s->avctx->pix_fmt = AV_PIX_FMT_GRAY8; -} else +} else if (s->palette_index && s->bits <= 8) +s->avctx->pix_fmt = AV_PIX_FMT_PAL8; +else if (s->bits <= 8) +s->avctx->pix_fmt = AV_PIX_FMT_GRAY8; +else s->avctx->pix_fmt = AV_PIX_FMT_GRAY16; } @@ -723,12 +719,25 @@ int ff_mjpeg_decode_sof(MJpegDecodeContext *s) if (s->avctx->skip_frame == AVDISCARD_ALL) { s->picture_ptr->pict_type = AV_PICTURE_TYPE_I; s->picture_ptr->key_frame = 1; -s->seen_sof = 1; +s->got_picture= 1; return 0; } -} -s->seen_sof = 1; +av_frame_unref(s->picture_ptr); +if (ff_get_buffer(s->avctx, s->picture_ptr, AV_GET_BUFFER_FLAG_REF) < 0) +return -1; +s->picture_ptr->pict_type = AV_PICTURE_TYPE_I; +s->picture_ptr->key_frame = 1; +s->got_picture= 1; + +for (i = 0; i < 4; i++) +s->linesize[i] = s->picture_ptr->linesize[i] << s->interlaced; + +ff_dlog(s->avctx, "%d %d %d %d %d %d\n", +s->width, s->height, s->linesize[0], s->linesize[1], +s->interlaced, s->avctx->height); + +} if ((s->rgb && !s->lossless && !s->ls) || (!s->rgb && s->ls && s->nb_com
[FFmpeg-cvslog] avcodec/jpeglsdec: Set alpha plane in PAL8 so image is not 100% transparent
ffmpeg | branch: master | Michael Niedermayer | Sun May 2 15:49:55 2021 +0200| [011006874cb46325b6bc83234f81879ff421c05f] | committer: Michael Niedermayer avcodec/jpeglsdec: Set alpha plane in PAL8 so image is not 100% transparent Fixes: tickets/3933/128.jls Signed-off-by: Michael Niedermayer > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=011006874cb46325b6bc83234f81879ff421c05f --- libavcodec/jpeglsdec.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libavcodec/jpeglsdec.c b/libavcodec/jpeglsdec.c index bd9224d97d..c61cb14f49 100644 --- a/libavcodec/jpeglsdec.c +++ b/libavcodec/jpeglsdec.c @@ -124,7 +124,7 @@ int ff_jpegls_decode_lse(MJpegDecodeContext *s) for (i=s->palette_index; i<=maxtab; i++) { uint8_t k = i << shift; -pal[k] = 0; +pal[k] = wt < 4 ? 0xFF00 : 0; for (j=0; jgb, 8) << (8*(wt-j-1)); } ___ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog To unsubscribe, visit link above, or email ffmpeg-cvslog-requ...@ffmpeg.org with subject "unsubscribe".
[FFmpeg-cvslog] tests/image: remove colorspace conversion from jpegls tests
ffmpeg | branch: master | James Almer | Mon May 3 18:31:03 2021 -0300| [e27e80edcd3a20efb8520943448aa9353a191ecd] | committer: James Almer tests/image: remove colorspace conversion from jpegls tests It's not needed after 011006874cb46325b6bc83234f81879ff421c05f. Signed-off-by: James Almer > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=e27e80edcd3a20efb8520943448aa9353a191ecd --- tests/fate/image.mak | 8 tests/ref/fate/jpegls-2bpc | 2 +- tests/ref/fate/jpegls-3bpc | 2 +- tests/ref/fate/jpegls-5bpc | 2 +- tests/ref/fate/jpegls-7bpc | 2 +- 5 files changed, 8 insertions(+), 8 deletions(-) diff --git a/tests/fate/image.mak b/tests/fate/image.mak index 07316542e1..3b58972a53 100644 --- a/tests/fate/image.mak +++ b/tests/fate/image.mak @@ -339,16 +339,16 @@ FATE_IMAGE += $(FATE_JPG-yes) fate-jpg: $(FATE_JPG-yes) FATE_JPEGLS += fate-jpegls-2bpc -fate-jpegls-2bpc: CMD = framecrc -idct simple -i $(TARGET_SAMPLES)/jpegls/4.jls -pix_fmt rgb24 -vf scale +fate-jpegls-2bpc: CMD = framecrc -idct simple -i $(TARGET_SAMPLES)/jpegls/4.jls FATE_JPEGLS += fate-jpegls-3bpc -fate-jpegls-3bpc: CMD = framecrc -idct simple -i $(TARGET_SAMPLES)/jpegls/8.jls -pix_fmt rgb24 -vf scale +fate-jpegls-3bpc: CMD = framecrc -idct simple -i $(TARGET_SAMPLES)/jpegls/8.jls FATE_JPEGLS += fate-jpegls-5bpc -fate-jpegls-5bpc: CMD = framecrc -idct simple -i $(TARGET_SAMPLES)/jpegls/32.jls -pix_fmt rgb24 -vf scale +fate-jpegls-5bpc: CMD = framecrc -idct simple -i $(TARGET_SAMPLES)/jpegls/32.jls FATE_JPEGLS += fate-jpegls-7bpc -fate-jpegls-7bpc: CMD = framecrc -idct simple -i $(TARGET_SAMPLES)/jpegls/128.jls -pix_fmt rgb24 -vf scale +fate-jpegls-7bpc: CMD = framecrc -idct simple -i $(TARGET_SAMPLES)/jpegls/128.jls FATE_JPEGLS-$(call DEMDEC, IMAGE2, JPEGLS) += $(FATE_JPEGLS) FATE_IMAGE += $(FATE_JPEGLS-yes) diff --git a/tests/ref/fate/jpegls-2bpc b/tests/ref/fate/jpegls-2bpc index 06364273e2..1a33de75ea 100644 --- a/tests/ref/fate/jpegls-2bpc +++ b/tests/ref/fate/jpegls-2bpc @@ -3,4 +3,4 @@ #codec_id 0: rawvideo #dimensions 0: 711x711 #sar 0: 0/1 -0, 0, 0,1, 1516563, 0x2c788aa2 +0, 0, 0,1, 506545, 0xf3278285 diff --git a/tests/ref/fate/jpegls-3bpc b/tests/ref/fate/jpegls-3bpc index 59c085a4b0..0e0c9af332 100644 --- a/tests/ref/fate/jpegls-3bpc +++ b/tests/ref/fate/jpegls-3bpc @@ -3,4 +3,4 @@ #codec_id 0: rawvideo #dimensions 0: 711x711 #sar 0: 0/1 -0, 0, 0,1, 1516563, 0x8a30bd1d +0, 0, 0,1, 506545, 0xa6a17e71 diff --git a/tests/ref/fate/jpegls-5bpc b/tests/ref/fate/jpegls-5bpc index 114f8e05db..954311bf52 100644 --- a/tests/ref/fate/jpegls-5bpc +++ b/tests/ref/fate/jpegls-5bpc @@ -3,4 +3,4 @@ #codec_id 0: rawvideo #dimensions 0: 711x711 #sar 0: 0/1 -0, 0, 0,1, 1516563, 0xaf7085ce +0, 0, 0,1, 506545, 0x759a1ca3 diff --git a/tests/ref/fate/jpegls-7bpc b/tests/ref/fate/jpegls-7bpc index 0fdfb8fab0..4c6b7f98b1 100644 --- a/tests/ref/fate/jpegls-7bpc +++ b/tests/ref/fate/jpegls-7bpc @@ -3,4 +3,4 @@ #codec_id 0: rawvideo #dimensions 0: 711x711 #sar 0: 0/1 -0, 0, 0,1, 1516563, 0x9c0af8f1 +0, 0, 0,1, 506545, 0x7c88a900 ___ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog To unsubscribe, visit link above, or email ffmpeg-cvslog-requ...@ffmpeg.org with subject "unsubscribe".