[FFmpeg-cvslog] avdevice/v4l2: fix leak of timefilter
ffmpeg | branch: master | Zhao Zhili | Wed Jul 27 00:32:51 2022 +0800| [30aa0c3f4873a92c5e3da8ba8cf030de56bf4cf7] | committer: Zhao Zhili avdevice/v4l2: fix leak of timefilter Fixes ticket #9844. Signed-off-by: Zhao Zhili > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=30aa0c3f4873a92c5e3da8ba8cf030de56bf4cf7 --- libavdevice/v4l2.c | 1 + 1 file changed, 1 insertion(+) diff --git a/libavdevice/v4l2.c b/libavdevice/v4l2.c index 5340382d57..be422d7c8c 100644 --- a/libavdevice/v4l2.c +++ b/libavdevice/v4l2.c @@ -1011,6 +1011,7 @@ static int v4l2_read_close(AVFormatContext *ctx) mmap_close(s); +ff_timefilter_destroy(s->timefilter); v4l2_close(s->fd); return 0; } ___ 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] avformat/flvenc: fix timestamp of key frame index
ffmpeg | branch: master | Zhao Zhili | Fri Jul 29 12:43:08 2022 +0800| [693c5be320c23e892c49907eba394215bddbe94a] | committer: Zhao Zhili avformat/flvenc: fix timestamp of key frame index Firstly, the timestamps generated from framerate are inaccurate for variable framerate mode. Secondly, the timestamps always start from zero, while pts/dts can start from nonzero. FLV demuxer rejects such index with message: "Found invalid index entries, clearing the index". > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=693c5be320c23e892c49907eba394215bddbe94a --- libavformat/flvenc.c | 5 + tests/ref/fate/flv-add_keyframe_index | 2 +- 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/libavformat/flvenc.c b/libavformat/flvenc.c index 770ca319ed..1c4ffb985a 100644 --- a/libavformat/flvenc.c +++ b/libavformat/flvenc.c @@ -104,7 +104,6 @@ typedef struct FLVContext { int64_t lastkeyframelocation_offset; int64_t lastkeyframelocation; -int acurframeindex; int64_t keyframes_info_offset; int64_t filepositions_count; @@ -391,7 +390,6 @@ static void write_metadata(AVFormatContext *s, unsigned int ts) } if (flv->flags & FLV_ADD_KEYFRAME_INDEX) { -flv->acurframeindex = 0; flv->keyframe_index_size = 0; put_amf_string(pb, "hasVideo"); @@ -993,8 +991,7 @@ static int flv_write_packet(AVFormatContext *s, AVPacket *pkt) switch (par->codec_type) { case AVMEDIA_TYPE_VIDEO: flv->videosize += (avio_tell(pb) - cur_offset); -flv->lasttimestamp = flv->acurframeindex / flv->framerate; -flv->acurframeindex++; +flv->lasttimestamp = pkt->dts / 1000.0; if (pkt->flags & AV_PKT_FLAG_KEY) { double ts = flv->lasttimestamp; int64_t pos = cur_offset; diff --git a/tests/ref/fate/flv-add_keyframe_index b/tests/ref/fate/flv-add_keyframe_index index 39c4bed85a..6549170a68 100644 --- a/tests/ref/fate/flv-add_keyframe_index +++ b/tests/ref/fate/flv-add_keyframe_index @@ -1,4 +1,4 @@ -5f38d76da3ed4a5be06ca604c53666f2 *tests/data/fate/flv-add_keyframe_index.flv +9f3d6de74f3329651a4c515c20cea00f *tests/data/fate/flv-add_keyframe_index.flv 630192 tests/data/fate/flv-add_keyframe_index.flv #tb 0: 1/1000 #media_type 0: video ___ 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] avformat/flvenc: fix shadowed variable ts
ffmpeg | branch: master | Zhao Zhili | Fri Jul 29 12:43:10 2022 +0800| [f56730fb6f21265963e11bf6d0928d03191f144c] | committer: Zhao Zhili avformat/flvenc: fix shadowed variable ts > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=f56730fb6f21265963e11bf6d0928d03191f144c --- libavformat/flvenc.c | 9 +++-- 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/libavformat/flvenc.c b/libavformat/flvenc.c index 1c4ffb985a..5d574fa790 100644 --- a/libavformat/flvenc.c +++ b/libavformat/flvenc.c @@ -993,12 +993,9 @@ static int flv_write_packet(AVFormatContext *s, AVPacket *pkt) flv->videosize += (avio_tell(pb) - cur_offset); flv->lasttimestamp = pkt->dts / 1000.0; if (pkt->flags & AV_PKT_FLAG_KEY) { -double ts = flv->lasttimestamp; -int64_t pos = cur_offset; - -flv->lastkeyframetimestamp = ts; -flv->lastkeyframelocation = pos; -ret = flv_append_keyframe_info(s, flv, ts, pos); +flv->lastkeyframetimestamp = flv->lasttimestamp; +flv->lastkeyframelocation = cur_offset; +ret = flv_append_keyframe_info(s, flv, flv->lasttimestamp, cur_offset); if (ret < 0) goto fail; } ___ 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] avformat/flvdec: make key frame timestamps more accurate
ffmpeg | branch: master | Zhao Zhili | Fri Jul 29 12:43:09 2022 +0800| [988838cf4f1e6e217226f9520303a948b2294ae2] | committer: Zhao Zhili avformat/flvdec: make key frame timestamps more accurate There was an implicit cast from double to int64_t in time unit of second. > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=988838cf4f1e6e217226f9520303a948b2294ae2 --- libavformat/flvdec.c | 13 +++-- 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/libavformat/flvdec.c b/libavformat/flvdec.c index 8dba92661b..10f0ea7736 100644 --- a/libavformat/flvdec.c +++ b/libavformat/flvdec.c @@ -146,9 +146,9 @@ static void add_keyframes_index(AVFormatContext *s) if (ffstream(stream)->nb_index_entries == 0) { for (i = 0; i < flv->keyframe_count; i++) { av_log(s, AV_LOG_TRACE, "keyframe filepositions = %"PRId64" times = %"PRId64"\n", - flv->keyframe_filepositions[i], flv->keyframe_times[i] * 1000); + flv->keyframe_filepositions[i], flv->keyframe_times[i]); av_add_index_entry(stream, flv->keyframe_filepositions[i], -flv->keyframe_times[i] * 1000, 0, 0, AVINDEX_KEYFRAME); +flv->keyframe_times[i], 0, 0, AVINDEX_KEYFRAME); } } else av_log(s, AV_LOG_WARNING, "Skipping duplicate index\n"); @@ -428,6 +428,7 @@ static int parse_keyframes_index(AVFormatContext *s, AVIOContext *ioc, int64_t m amf_get_string(ioc, str_val, sizeof(str_val)) > 0) { int64_t **current_array; unsigned int arraylen; +int factor; // Expect array object in context if (avio_r8(ioc) != AMF_DATA_TYPE_ARRAY) @@ -440,10 +441,12 @@ static int parse_keyframes_index(AVFormatContext *s, AVIOContext *ioc, int64_t m if (!strcmp(KEYFRAMES_TIMESTAMP_TAG , str_val) && !times) { current_array = × timeslen = arraylen; +factor = 1000; } else if (!strcmp(KEYFRAMES_BYTEOFFSET_TAG, str_val) && !filepositions) { current_array = &filepositions; fileposlen= arraylen; +factor = 1; } else // unexpected metatag inside keyframes, will not use such // metadata for indexing @@ -458,11 +461,9 @@ static int parse_keyframes_index(AVFormatContext *s, AVIOContext *ioc, int64_t m double d; if (avio_r8(ioc) != AMF_DATA_TYPE_NUMBER) goto invalid; -d = av_int2double(avio_rb64(ioc)); +d = av_int2double(avio_rb64(ioc)) * factor; if (isnan(d) || d < INT64_MIN || d > INT64_MAX) goto invalid; -if (current_array == × && (d <= INT64_MIN / 1000 || d >= INT64_MAX / 1000)) -goto invalid; if (avio_feof(ioc)) goto invalid; current_array[0][i] = d; @@ -478,7 +479,7 @@ static int parse_keyframes_index(AVFormatContext *s, AVIOContext *ioc, int64_t m if (timeslen == fileposlen && fileposlen>1 && max_pos <= filepositions[0]) { for (i = 0; i < FFMIN(2,fileposlen); i++) { flv->validate_index[i].pos = filepositions[i]; -flv->validate_index[i].dts = times[i] * 1000; +flv->validate_index[i].dts = times[i]; flv->validate_count= i + 1; } flv->keyframe_times = times; ___ 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/intrax8: Avoid indirection when accessing VLC table
ffmpeg | branch: master | Andreas Rheinhardt | Sun Jul 31 11:26:11 2022 +0200| [900ce6f8c3526f27173057bb955f54f4f4f41246] | committer: Andreas Rheinhardt avcodec/intrax8: Avoid indirection when accessing VLC table To do so, store the pointer to the VLC table and not to the VLC. This is possible, because all the VLCs of the same type use the same number of bits. Also use a const VLCElem*, because the target is static and must therefore not be modified after its initialization. Signed-off-by: Andreas Rheinhardt > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=900ce6f8c3526f27173057bb955f54f4f4f41246 --- libavcodec/intrax8.c | 24 libavcodec/intrax8.h | 6 +++--- 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/libavcodec/intrax8.c b/libavcodec/intrax8.c index b99e8590b1..e82cb8680e 100644 --- a/libavcodec/intrax8.c +++ b/libavcodec/intrax8.c @@ -91,9 +91,9 @@ static av_cold void x8_vlc_init(void) static void x8_reset_vlc_tables(IntraX8Context *w) { -memset(w->j_dc_vlc, 0, sizeof(w->j_dc_vlc)); -memset(w->j_ac_vlc, 0, sizeof(w->j_ac_vlc)); -w->j_orient_vlc = NULL; +memset(w->j_dc_vlc_table, 0, sizeof(w->j_dc_vlc_table)); +memset(w->j_ac_vlc_table, 0, sizeof(w->j_ac_vlc_table)); +w->j_orient_vlc_table = NULL; } static inline void x8_select_ac_table(IntraX8Context *const w, int mode) @@ -102,23 +102,23 @@ static inline void x8_select_ac_table(IntraX8Context *const w, int mode) av_assert2(mode < 4); -if (w->j_ac_vlc[mode]) +if (w->j_ac_vlc_table[mode]) return; table_index = get_bits(w->gb, 3); // 2 modes use same tables -w->j_ac_vlc[mode] = &j_ac_vlc[w->quant < 13][mode >> 1][table_index]; +w->j_ac_vlc_table[mode] = j_ac_vlc[w->quant < 13][mode >> 1][table_index].table; av_assert2(w->j_ac_vlc[mode]); } static inline int x8_get_orient_vlc(IntraX8Context *w) { -if (!w->j_orient_vlc) { +if (!w->j_orient_vlc_table) { int table_index = get_bits(w->gb, 1 + (w->quant < 13)); -w->j_orient_vlc = &j_orient_vlc[w->quant < 13][table_index]; +w->j_orient_vlc_table = j_orient_vlc[w->quant < 13][table_index].table; } -return get_vlc2(w->gb, w->j_orient_vlc->table, OR_VLC_BITS, OR_VLC_MTD); +return get_vlc2(w->gb, w->j_orient_vlc_table, OR_VLC_BITS, OR_VLC_MTD); } #define extra_bits(eb) (eb)// 3 bits @@ -174,7 +174,7 @@ static void x8_get_ac_rlf(IntraX8Context *const w, const int mode, int i, e; //x8_select_ac_table(w, mode); -i = get_vlc2(w->gb, w->j_ac_vlc[mode]->table, AC_VLC_BITS, AC_VLC_MTD); +i = get_vlc2(w->gb, w->j_ac_vlc_table[mode], AC_VLC_BITS, AC_VLC_MTD); if (i < 46) { // [0-45] int t, l; @@ -254,13 +254,13 @@ static int x8_get_dc_rlf(IntraX8Context *const w, const int mode, int i, e, c; av_assert2(mode < 3); -if (!w->j_dc_vlc[mode]) { +if (!w->j_dc_vlc_table[mode]) { int table_index = get_bits(w->gb, 3); // 4 modes, same table -w->j_dc_vlc[mode] = &j_dc_vlc[w->quant < 13][table_index]; +w->j_dc_vlc_table[mode] = j_dc_vlc[w->quant < 13][table_index].table; } -i = get_vlc2(w->gb, w->j_dc_vlc[mode]->table, DC_VLC_BITS, DC_VLC_MTD); +i = get_vlc2(w->gb, w->j_dc_vlc_table[mode], DC_VLC_BITS, DC_VLC_MTD); /* (i >= 17) { i -= 17; final =1; } */ c = i > 16; diff --git a/libavcodec/intrax8.h b/libavcodec/intrax8.h index 3ebbf73434..966f1b18a0 100644 --- a/libavcodec/intrax8.h +++ b/libavcodec/intrax8.h @@ -27,9 +27,9 @@ #include "mpegpicture.h" typedef struct IntraX8Context { -VLC *j_ac_vlc[4]; // they point to the static j_mb_vlc -VLC *j_orient_vlc; -VLC *j_dc_vlc[3]; +const VLCElem *j_ac_vlc_table[4]; // they point to the static j_mb_vlc.table +const VLCElem *j_orient_vlc_table; +const VLCElem *j_dc_vlc_table[3]; int use_quant_matrix; ___ 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/intrax8: Remove unused IDCTDSPContext
ffmpeg | branch: master | Andreas Rheinhardt | Sun Jul 31 09:17:44 2022 +0200| [eb5c5ae658aaf8cd7c03e1d0a6c84274d3a39a66] | committer: Andreas Rheinhardt avcodec/intrax8: Remove unused IDCTDSPContext Signed-off-by: Andreas Rheinhardt > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=eb5c5ae658aaf8cd7c03e1d0a6c84274d3a39a66 --- configure| 2 +- libavcodec/intrax8.c | 4 +--- libavcodec/intrax8.h | 3 +-- libavcodec/vc1dec.c | 2 +- libavcodec/wmv2dec.c | 2 +- 5 files changed, 5 insertions(+), 8 deletions(-) diff --git a/configure b/configure index 73aba3..6ee6aecac2 100755 --- a/configure +++ b/configure @@ -2733,7 +2733,7 @@ h264dsp_select="startcode" hevcparse_select="atsc_a53 golomb" frame_thread_encoder_deps="encoders threads" inflate_wrapper_deps="zlib" -intrax8_select="blockdsp idctdsp" +intrax8_select="blockdsp" iso_media_select="mpeg4audio" mdct_select="fft" mdct15_select="fft" diff --git a/libavcodec/intrax8.c b/libavcodec/intrax8.c index 73b8aeea78..b99e8590b1 100644 --- a/libavcodec/intrax8.c +++ b/libavcodec/intrax8.c @@ -25,7 +25,6 @@ #include "libavutil/thread.h" #include "avcodec.h" #include "get_bits.h" -#include "idctdsp.h" #include "msmpeg4data.h" #include "intrax8huf.h" #include "intrax8.h" @@ -692,7 +691,7 @@ static void x8_init_block_index(IntraX8Context *w, AVFrame *frame) } av_cold int ff_intrax8_common_init(AVCodecContext *avctx, - IntraX8Context *w, IDCTDSPContext *idsp, + IntraX8Context *w, int16_t (*block)[64], int block_last_index[12], int mb_width, int mb_height) @@ -700,7 +699,6 @@ av_cold int ff_intrax8_common_init(AVCodecContext *avctx, static AVOnce init_static_once = AV_ONCE_INIT; w->avctx = avctx; -w->idsp = *idsp; w->mb_width = mb_width; w->mb_height = mb_height; w->block = block; diff --git a/libavcodec/intrax8.h b/libavcodec/intrax8.h index 5b8946ea25..3ebbf73434 100644 --- a/libavcodec/intrax8.h +++ b/libavcodec/intrax8.h @@ -44,7 +44,6 @@ typedef struct IntraX8Context { // set by the caller codec IntraX8DSPContext dsp; -IDCTDSPContext idsp; BlockDSPContext bdsp; int quant; int dquant; @@ -86,7 +85,7 @@ typedef struct IntraX8Context { * @return 0 on success, a negative AVERROR value on error */ int ff_intrax8_common_init(AVCodecContext *avctx, - IntraX8Context *w, IDCTDSPContext *idsp, + IntraX8Context *w, int16_t (*block)[64], int block_last_index[12], int mb_width, int mb_height); diff --git a/libavcodec/vc1dec.c b/libavcodec/vc1dec.c index 5c5b31ad32..b53490b3ab 100644 --- a/libavcodec/vc1dec.c +++ b/libavcodec/vc1dec.c @@ -391,7 +391,7 @@ av_cold int ff_vc1_decode_init_alloc_tables(VC1Context *v) goto error; } -ret = ff_intrax8_common_init(s->avctx, &v->x8, &s->idsp, +ret = ff_intrax8_common_init(s->avctx, &v->x8, s->block, s->block_last_index, s->mb_width, s->mb_height); if (ret < 0) diff --git a/libavcodec/wmv2dec.c b/libavcodec/wmv2dec.c index e61b549439..6d9b72d123 100644 --- a/libavcodec/wmv2dec.c +++ b/libavcodec/wmv2dec.c @@ -578,7 +578,7 @@ static av_cold int wmv2_decode_init(AVCodecContext *avctx) ff_init_scantable(s->idsp.idct_permutation, &w->abt_scantable[1], ff_wmv2_scantableB); -return ff_intrax8_common_init(avctx, &w->x8, &w->s.idsp, +return ff_intrax8_common_init(avctx, &w->x8, w->s.block, w->s.block_last_index, w->s.mb_width, w->s.mb_height); } ___ 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] configure: Add msmpeg4(dec|enc) subsystems
ffmpeg | branch: master | Andreas Rheinhardt | Sun Jul 31 11:12:41 2022 +0200| [b0e38c7d1ed8d303f008b0827802b159d8ef9b19] | committer: Andreas Rheinhardt configure: Add msmpeg4(dec|enc) subsystems The msmpeg4 decoders/encoders share a common set of prerequisites, ergo it makes sense to use common subsystems for them. This also allows to remove the CONFIG_MSMPEG4_DECODER/ENCODER ad-hoc defines (which violated the CONFIG_ namespace). Reviewed-by: Martin Storsjö Signed-off-by: Andreas Rheinhardt > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=b0e38c7d1ed8d303f008b0827802b159d8ef9b19 --- configure | 24 ++-- libavcodec/Makefile| 16 libavcodec/h263dec.c | 4 ++-- libavcodec/mpegvideo_enc.c | 8 libavcodec/msmpeg4dec.h| 8 libavcodec/msmpeg4enc.h| 6 -- libavformat/protocols.c| 1 + 7 files changed, 25 insertions(+), 42 deletions(-) diff --git a/configure b/configure index 1c2bd4aae1..bb4d532b7e 100755 --- a/configure +++ b/configure @@ -2490,6 +2490,8 @@ CONFIG_EXTRA=" mpegvideo mpegvideodec mpegvideoenc +msmpeg4dec +msmpeg4enc mss34dsp pixblockdsp qpeldsp @@ -2744,6 +2746,8 @@ mpegaudiodsp_select="dct" mpegvideo_select="blockdsp h264chroma hpeldsp idctdsp videodsp" mpegvideodec_select="mpegvideo mpeg_er" mpegvideoenc_select="aandcttables me_cmp mpegvideo pixblockdsp qpeldsp" +msmpeg4dec_select="h263_decoder" +msmpeg4enc_select="h263_encoder" vc1dsp_select="h264chroma qpeldsp startcode" rdft_select="fft" @@ -2893,11 +2897,11 @@ mpeg4_decoder_select="h263_decoder mpeg4video_parser" mpeg4_encoder_select="h263_encoder" msa1_decoder_select="mss34dsp" mscc_decoder_select="inflate_wrapper" -msmpeg4v1_decoder_select="h263_decoder" -msmpeg4v2_decoder_select="h263_decoder" -msmpeg4v2_encoder_select="h263_encoder" -msmpeg4v3_decoder_select="h263_decoder" -msmpeg4v3_encoder_select="h263_encoder" +msmpeg4v1_decoder_select="msmpeg4dec" +msmpeg4v2_decoder_select="msmpeg4dec" +msmpeg4v2_encoder_select="msmpeg4enc" +msmpeg4v3_decoder_select="msmpeg4dec" +msmpeg4v3_encoder_select="msmpeg4enc" mss2_decoder_select="mpegvideodec qpeldsp vc1_decoder" mts2_decoder_select="jpegtables mss34dsp" mv30_decoder_select="aandcttables blockdsp" @@ -2968,7 +2972,7 @@ utvideo_encoder_select="bswapdsp huffman llvidencdsp" vble_decoder_select="llviddsp" vbn_decoder_select="texturedsp" vbn_encoder_select="texturedspenc" -vc1_decoder_select="blockdsp h263_decoder h264qpel intrax8 mpegvideodec vc1dsp" +vc1_decoder_select="blockdsp h264qpel intrax8 mpegvideodec msmpeg4dec vc1dsp" vc1image_decoder_select="vc1_decoder" vorbis_decoder_select="mdct" vorbis_encoder_select="audio_frame_queue mdct" @@ -2990,10 +2994,10 @@ wmav1_encoder_select="mdct sinewin wma_freqs" wmav2_decoder_select="mdct sinewin wma_freqs" wmav2_encoder_select="mdct sinewin wma_freqs" wmavoice_decoder_select="lsp rdft dct mdct sinewin" -wmv1_decoder_select="h263_decoder" -wmv1_encoder_select="h263_encoder" -wmv2_decoder_select="blockdsp error_resilience h263_decoder idctdsp intrax8 videodsp wmv2dsp" -wmv2_encoder_select="h263_encoder wmv2dsp" +wmv1_decoder_select="msmpeg4dec" +wmv1_encoder_select="msmpeg4enc" +wmv2_decoder_select="blockdsp error_resilience idctdsp intrax8 msmpeg4dec videodsp wmv2dsp" +wmv2_encoder_select="msmpeg4enc wmv2dsp" wmv3_decoder_select="vc1_decoder" wmv3image_decoder_select="wmv3_decoder" xma1_decoder_select="wmapro_decoder" diff --git a/libavcodec/Makefile b/libavcodec/Makefile index 8ebe133beb..836132f430 100644 --- a/libavcodec/Makefile +++ b/libavcodec/Makefile @@ -141,6 +141,8 @@ OBJS-$(CONFIG_MPEGVIDEODEC)+= mpegvideo_dec.o mpegutils.o OBJS-$(CONFIG_MPEGVIDEOENC)+= mpegvideo_enc.o mpeg12data.o \ motion_est.o ratecontrol.o\ mpegvideoencdsp.o +OBJS-$(CONFIG_MSMPEG4DEC) += msmpeg4dec.o msmpeg4.o msmpeg4data.o +OBJS-$(CONFIG_MSMPEG4ENC) += msmpeg4enc.o msmpeg4.o msmpeg4data.o OBJS-$(CONFIG_MSS34DSP)+= mss34dsp.o OBJS-$(CONFIG_PIXBLOCKDSP) += pixblockdsp.o OBJS-$(CONFIG_QPELDSP) += qpeldsp.o @@ -527,11 +529,6 @@ OBJS-$(CONFIG_MPEG4_V4L2M2M_ENCODER) += v4l2_m2m_enc.o OBJS-$(CONFIG_MPL2_DECODER)+= mpl2dec.o ass.o OBJS-$(CONFIG_MSA1_DECODER)+= mss3.o OBJS-$(CONFIG_MSCC_DECODER)+= mscc.o -OBJS-$(CONFIG_MSMPEG4V1_DECODER) += msmpeg4dec.o msmpeg4.o msmpeg4data.o -OBJS-$(CONFIG_MSMPEG4V2_DECODER) += msmpeg4dec.o msmpeg4.o msmpeg4data.o -OBJS-$(CONFIG_MSMPEG4V2_ENCODER) += msmpeg4enc.o msmpeg4.o msmpeg4data.o -OBJS-$(CONFIG_MSMPEG4V3_DECODER) += msmpeg4dec.o msmpeg4.o msmpeg4data.o -OBJS-$(CONFIG_MSMPEG4V3_ENCODER) += msmpeg4enc.o msmpeg4.o msmpeg4data.o OBJS-$(CONFIG_MSNSIREN_DECODER)+= siren.o OBJS-$(CON
[FFmpeg-cvslog] configure, avcodec/Makefile: Make IntraX8 select WMV2DSP, fix MIPS build
ffmpeg | branch: master | Andreas Rheinhardt | Sun Jul 31 09:47:32 2022 +0200| [b10e218df1cfc3f303830ba7a6ef58ae8dc4969b] | committer: Andreas Rheinhardt configure, avcodec/Makefile: Make IntraX8 select WMV2DSP, fix MIPS build IntraX8 uses WMV2DSP directly, so it should have a direct dependency on it. Also remove the indirect Makefile dependency of the VC-1 decoder on wmv2dsp.o. Notice that since the addition of the MIPS WMV2DSP implementation building only the VC-1 decoder would fail, because no Makefile dependency VC1->wmv2dsp_init_mips.o has been added. This is of course fixed by this commit. Signed-off-by: Andreas Rheinhardt > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=b10e218df1cfc3f303830ba7a6ef58ae8dc4969b --- configure | 2 +- libavcodec/Makefile | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/configure b/configure index 6ee6aecac2..1c2bd4aae1 100755 --- a/configure +++ b/configure @@ -2733,7 +2733,7 @@ h264dsp_select="startcode" hevcparse_select="atsc_a53 golomb" frame_thread_encoder_deps="encoders threads" inflate_wrapper_deps="zlib" -intrax8_select="blockdsp" +intrax8_select="blockdsp wmv2dsp" iso_media_select="mpeg4audio" mdct_select="fft" mdct15_select="fft" diff --git a/libavcodec/Makefile b/libavcodec/Makefile index ca5a38bee1..8ebe133beb 100644 --- a/libavcodec/Makefile +++ b/libavcodec/Makefile @@ -723,7 +723,7 @@ OBJS-$(CONFIG_VBLE_DECODER)+= vble.o OBJS-$(CONFIG_VC1_DECODER) += vc1dec.o vc1_block.o vc1_loopfilter.o \ vc1_mc.o vc1_pred.o vc1.o vc1data.o \ msmpeg4dec.o msmpeg4.o msmpeg4data.o \ - wmv2dsp.o wmv2data.o + wmv2data.o OBJS-$(CONFIG_VC1_CUVID_DECODER) += cuviddec.o OBJS-$(CONFIG_VC1_MMAL_DECODER)+= mmaldec.o OBJS-$(CONFIG_VC1_QSV_DECODER) += qsvdec.o ___ 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] avutil/opt: Combine multiple av_log statements
ffmpeg | branch: master | Andreas Rheinhardt | Tue Aug 2 19:17:41 2022 +0200| [8d7d52721aa893715739acde602b27dcd2adce97] | committer: Andreas Rheinhardt avutil/opt: Combine multiple av_log statements Reviewed-by: Thilo Borgmann Signed-off-by: Andreas Rheinhardt > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=8d7d52721aa893715739acde602b27dcd2adce97 --- libavutil/opt.c | 23 --- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/libavutil/opt.c b/libavutil/opt.c index 8ffb10449b..a3940f47fb 100644 --- a/libavutil/opt.c +++ b/libavutil/opt.c @@ -1329,17 +1329,18 @@ FF_ENABLE_DEPRECATION_WARNINGS av_log(av_log_obj, AV_LOG_INFO, "%-12s ", ""); break; } -av_log(av_log_obj, AV_LOG_INFO, "%c", (opt->flags & AV_OPT_FLAG_ENCODING_PARAM) ? 'E' : '.'); -av_log(av_log_obj, AV_LOG_INFO, "%c", (opt->flags & AV_OPT_FLAG_DECODING_PARAM) ? 'D' : '.'); -av_log(av_log_obj, AV_LOG_INFO, "%c", (opt->flags & AV_OPT_FLAG_FILTERING_PARAM)? 'F' : '.'); -av_log(av_log_obj, AV_LOG_INFO, "%c", (opt->flags & AV_OPT_FLAG_VIDEO_PARAM ) ? 'V' : '.'); -av_log(av_log_obj, AV_LOG_INFO, "%c", (opt->flags & AV_OPT_FLAG_AUDIO_PARAM ) ? 'A' : '.'); -av_log(av_log_obj, AV_LOG_INFO, "%c", (opt->flags & AV_OPT_FLAG_SUBTITLE_PARAM) ? 'S' : '.'); -av_log(av_log_obj, AV_LOG_INFO, "%c", (opt->flags & AV_OPT_FLAG_EXPORT) ? 'X' : '.'); -av_log(av_log_obj, AV_LOG_INFO, "%c", (opt->flags & AV_OPT_FLAG_READONLY) ? 'R' : '.'); -av_log(av_log_obj, AV_LOG_INFO, "%c", (opt->flags & AV_OPT_FLAG_BSF_PARAM) ? 'B' : '.'); -av_log(av_log_obj, AV_LOG_INFO, "%c", (opt->flags & AV_OPT_FLAG_RUNTIME_PARAM) ? 'T' : '.'); -av_log(av_log_obj, AV_LOG_INFO, "%c", (opt->flags & AV_OPT_FLAG_DEPRECATED) ? 'P' : '.'); +av_log(av_log_obj, AV_LOG_INFO, "%c%c%c%c%c%c%c%c%c%c%c", + (opt->flags & AV_OPT_FLAG_ENCODING_PARAM) ? 'E' : '.', + (opt->flags & AV_OPT_FLAG_DECODING_PARAM) ? 'D' : '.', + (opt->flags & AV_OPT_FLAG_FILTERING_PARAM) ? 'F' : '.', + (opt->flags & AV_OPT_FLAG_VIDEO_PARAM) ? 'V' : '.', + (opt->flags & AV_OPT_FLAG_AUDIO_PARAM) ? 'A' : '.', + (opt->flags & AV_OPT_FLAG_SUBTITLE_PARAM) ? 'S' : '.', + (opt->flags & AV_OPT_FLAG_EXPORT) ? 'X' : '.', + (opt->flags & AV_OPT_FLAG_READONLY)? 'R' : '.', + (opt->flags & AV_OPT_FLAG_BSF_PARAM) ? 'B' : '.', + (opt->flags & AV_OPT_FLAG_RUNTIME_PARAM) ? 'T' : '.', + (opt->flags & AV_OPT_FLAG_DEPRECATED) ? 'P' : '.'); if (opt->help) av_log(av_log_obj, AV_LOG_INFO, " %s", opt->help); ___ 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] lavc/vaapi: Declare support for decoding 8bit 4:4:4 content
ffmpeg | branch: master | Philip Langdale | Sat Jul 23 11:24:33 2022 -0700| [d3f48e68b3236bc3fbf75cc489d53e9f397f5e0a] | committer: Philip Langdale lavc/vaapi: Declare support for decoding 8bit 4:4:4 content Now that we have a combination of capable hardware (new enough Intel) and a mutually understood format ("AYUV"), we can declare support for decoding 8bit 4:4:4 content via VAAPI. This requires listing AYUV as a supported format, and then adding VAAPI as a supported hwaccel for the relevant codecs (HEVC and VP9). I also had to add VP9Profile1 to the set of supported profiles for VAAPI as it was never relevant before. > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=d3f48e68b3236bc3fbf75cc489d53e9f397f5e0a --- Changelog | 1 + libavcodec/hevcdec.c | 3 +++ libavcodec/vaapi_decode.c | 2 ++ libavcodec/version.h | 2 +- libavcodec/vp9.c | 5 + 5 files changed, 12 insertions(+), 1 deletion(-) diff --git a/Changelog b/Changelog index 40ea7ccecf..d5f3d36094 100644 --- a/Changelog +++ b/Changelog @@ -8,6 +8,7 @@ version : - ffmpeg now requires threading to be built - ffmpeg now runs every muxer in a separate thread - Add new mode to cropdetect filter to detect crop-area based on motion vectors and edges +- VAAPI hwaccel for 8bit 444 HEVC and VP9 version 5.1: diff --git a/libavcodec/hevcdec.c b/libavcodec/hevcdec.c index 9b14fa50f9..539b656c65 100644 --- a/libavcodec/hevcdec.c +++ b/libavcodec/hevcdec.c @@ -453,6 +453,9 @@ static enum AVPixelFormat get_format(HEVCContext *s, const HEVCSPS *sps) #endif break; case AV_PIX_FMT_YUV444P: +#if CONFIG_HEVC_VAAPI_HWACCEL +*fmt++ = AV_PIX_FMT_VAAPI; +#endif #if CONFIG_HEVC_VDPAU_HWACCEL *fmt++ = AV_PIX_FMT_VDPAU; #endif diff --git a/libavcodec/vaapi_decode.c b/libavcodec/vaapi_decode.c index a7abddb06b..db48efc3ed 100644 --- a/libavcodec/vaapi_decode.c +++ b/libavcodec/vaapi_decode.c @@ -267,6 +267,7 @@ static const struct { MAP(422V, YUV440P), // 4:4:4 MAP(444P, YUV444P), +MAP(AYUV, VUYA), // 4:2:0 10-bit #ifdef VA_FOURCC_P010 MAP(P010, P010), @@ -410,6 +411,7 @@ static const struct { MAP(VP9, VP9_0, VP9Profile0 ), #endif #if VA_CHECK_VERSION(0, 39, 0) +MAP(VP9, VP9_1, VP9Profile1 ), MAP(VP9, VP9_2, VP9Profile2 ), #endif #if VA_CHECK_VERSION(1, 8, 0) diff --git a/libavcodec/version.h b/libavcodec/version.h index 4a1205c718..751f0d2645 100644 --- a/libavcodec/version.h +++ b/libavcodec/version.h @@ -30,7 +30,7 @@ #include "version_major.h" #define LIBAVCODEC_VERSION_MINOR 41 -#define LIBAVCODEC_VERSION_MICRO 100 +#define LIBAVCODEC_VERSION_MICRO 101 #define LIBAVCODEC_VERSION_INT AV_VERSION_INT(LIBAVCODEC_VERSION_MAJOR, \ LIBAVCODEC_VERSION_MINOR, \ diff --git a/libavcodec/vp9.c b/libavcodec/vp9.c index bd2951c92e..db06acd748 100644 --- a/libavcodec/vp9.c +++ b/libavcodec/vp9.c @@ -232,6 +232,11 @@ static int update_size(AVCodecContext *avctx, int w, int h) #endif #if CONFIG_VP9_VDPAU_HWACCEL *fmtp++ = AV_PIX_FMT_VDPAU; +#endif +break; +case AV_PIX_FMT_YUV444P: +#if CONFIG_VP9_VAAPI_HWACCEL +*fmtp++ = AV_PIX_FMT_VAAPI; #endif break; } ___ 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] lavu/pixfmt: Add packed 4:4:4 format
ffmpeg | branch: master | Philip Langdale | Sat Jul 23 11:11:59 2022 -0700| [6ab8a9d375ca922b2a94cd7160a4e3c5abe6339c] | committer: Philip Langdale lavu/pixfmt: Add packed 4:4:4 format The "AYUV" format is defined by Microsoft as their preferred format for 4:4:4 content, and so it is the format used by Intel VAAPI and QSV. As Microsoft like to define their byte ordering in little-endian fashion, the memory order is reversed, and so our pix_fmt, which follows memory order, has a reversed name (VUYA). > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=6ab8a9d375ca922b2a94cd7160a4e3c5abe6339c --- doc/APIchanges | 3 +++ libavutil/pixdesc.c | 13 + libavutil/pixfmt.h | 2 ++ libavutil/version.h | 2 +- tests/ref/fate/imgutils | 1 + tests/ref/fate/sws-pixdesc-query | 4 6 files changed, 24 insertions(+), 1 deletion(-) diff --git a/doc/APIchanges b/doc/APIchanges index 0e9ea4d7c5..0bf2b3cd77 100644 --- a/doc/APIchanges +++ b/doc/APIchanges @@ -14,6 +14,9 @@ libavutil: 2021-04-27 API changes, most recent first: +2022-08-03 - xx - lavu 57.32.100 - pixfmt.h + Add AV_PIX_FMT_VUYA. + 2022-08-xx - xx - lavc 59.41.100 - avcodec.h codec.h Add AV_CODEC_FLAG_RECON_FRAME and AV_CODEC_CAP_ENCODER_RECON_FRAME. avcodec_receive_frame() may now be used on encoders when diff --git a/libavutil/pixdesc.c b/libavutil/pixdesc.c index 6e57a82cb6..e078fd5320 100644 --- a/libavutil/pixdesc.c +++ b/libavutil/pixdesc.c @@ -2491,6 +2491,19 @@ static const AVPixFmtDescriptor av_pix_fmt_descriptors[AV_PIX_FMT_NB] = { }, .flags = AV_PIX_FMT_FLAG_PLANAR, }, +[AV_PIX_FMT_VUYA] = { +.name = "vuya", +.nb_components = 4, +.log2_chroma_w = 0, +.log2_chroma_h = 0, +.comp = { +{ 0, 4, 2, 0, 8 },/* Y */ +{ 0, 4, 1, 0, 8 },/* U */ +{ 0, 4, 0, 0, 8 },/* V */ +{ 0, 4, 3, 0, 8 },/* A */ +}, +.flags = AV_PIX_FMT_FLAG_ALPHA, +}, }; static const char * const color_range_names[] = { diff --git a/libavutil/pixfmt.h b/libavutil/pixfmt.h index 2d3927cc3f..9d1fdaf82d 100644 --- a/libavutil/pixfmt.h +++ b/libavutil/pixfmt.h @@ -367,6 +367,8 @@ enum AVPixelFormat { AV_PIX_FMT_P416BE, ///< interleaved chroma YUV 4:4:4, 48bpp, big-endian AV_PIX_FMT_P416LE, ///< interleaved chroma YUV 4:4:4, 48bpp, little-endian +AV_PIX_FMT_VUYA,///< packed VUYA 4:4:4, 32bpp, VUYAVUYA... + AV_PIX_FMT_NB ///< number of pixel formats, DO NOT USE THIS if you want to link with shared libav* because the number of formats might differ between versions }; diff --git a/libavutil/version.h b/libavutil/version.h index e9eefcdb2c..5095743fed 100644 --- a/libavutil/version.h +++ b/libavutil/version.h @@ -79,7 +79,7 @@ */ #define LIBAVUTIL_VERSION_MAJOR 57 -#define LIBAVUTIL_VERSION_MINOR 31 +#define LIBAVUTIL_VERSION_MINOR 32 #define LIBAVUTIL_VERSION_MICRO 100 #define LIBAVUTIL_VERSION_INT AV_VERSION_INT(LIBAVUTIL_VERSION_MAJOR, \ diff --git a/tests/ref/fate/imgutils b/tests/ref/fate/imgutils index b23d1b4c39..4ec66febb8 100644 --- a/tests/ref/fate/imgutils +++ b/tests/ref/fate/imgutils @@ -246,3 +246,4 @@ p216be planes: 2, linesizes: 128 128 0 0, plane_sizes: 6144 6144 p216le planes: 2, linesizes: 128 128 0 0, plane_sizes: 6144 6144 0 0, plane_offsets: 6144 0 0, total_size: 12288 p416be planes: 2, linesizes: 128 256 0 0, plane_sizes: 6144 12288 0 0, plane_offsets: 6144 0 0, total_size: 18432 p416le planes: 2, linesizes: 128 256 0 0, plane_sizes: 6144 12288 0 0, plane_offsets: 6144 0 0, total_size: 18432 +vuyaplanes: 1, linesizes: 256 0 0 0, plane_sizes: 12288 0 0 0, plane_offsets: 0 0 0, total_size: 12288 diff --git a/tests/ref/fate/sws-pixdesc-query b/tests/ref/fate/sws-pixdesc-query index 76104bc5a6..bd0f1fcb82 100644 --- a/tests/ref/fate/sws-pixdesc-query +++ b/tests/ref/fate/sws-pixdesc-query @@ -215,6 +215,7 @@ isYUV: p416le uyvy422 uyyvyy411 + vuya xyz12be xyz12le y210be @@ -654,6 +655,7 @@ ALPHA: rgb32_1 rgba64be rgba64le + vuya ya16be ya16le ya8 @@ -739,6 +741,7 @@ Packed: rgba64le uyvy422 uyyvyy411 + vuya x2bgr10be x2bgr10le x2rgb10be @@ -967,5 +970,6 @@ DataInHighBits: SwappedChroma: nv21 nv42 + vuya yvyu422 ___ 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] lavu/hwcontext_vaapi: Map the AYUV format
ffmpeg | branch: master | Philip Langdale | Sat Jul 23 11:23:38 2022 -0700| [2b720676e070c9920391ef29d35d8ca6a79bf0c6] | committer: Philip Langdale lavu/hwcontext_vaapi: Map the AYUV format This is the format used by Intel VAAPI for 8bit 4:4:4 content. > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=2b720676e070c9920391ef29d35d8ca6a79bf0c6 --- libavutil/hwcontext_vaapi.c | 1 + libavutil/version.h | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/libavutil/hwcontext_vaapi.c b/libavutil/hwcontext_vaapi.c index c3a98bc4b1..2ee5145727 100644 --- a/libavutil/hwcontext_vaapi.c +++ b/libavutil/hwcontext_vaapi.c @@ -125,6 +125,7 @@ static const VAAPIFormatDescriptor vaapi_format_map[] = { MAP(411P, YUV411, YUV411P, 0), MAP(422V, YUV422, YUV440P, 0), MAP(444P, YUV444, YUV444P, 0), +MAP(AYUV, YUV444, VUYA,0), MAP(Y800, YUV400, GRAY8, 0), #ifdef VA_FOURCC_P010 MAP(P010, YUV420_10BPP, P010, 0), diff --git a/libavutil/version.h b/libavutil/version.h index 5095743fed..ee43526dc6 100644 --- a/libavutil/version.h +++ b/libavutil/version.h @@ -80,7 +80,7 @@ #define LIBAVUTIL_VERSION_MAJOR 57 #define LIBAVUTIL_VERSION_MINOR 32 -#define LIBAVUTIL_VERSION_MICRO 100 +#define LIBAVUTIL_VERSION_MICRO 101 #define LIBAVUTIL_VERSION_INT AV_VERSION_INT(LIBAVUTIL_VERSION_MAJOR, \ LIBAVUTIL_VERSION_MINOR, \ ___ 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".