[FFmpeg-cvslog] configure: enable the av1_frame_split bsf for the av1 decoder
ffmpeg | branch: release/5.1 | Hendrik Leppkes | Thu Aug 18 21:00:28 2022 +0200| [0143b0d964ebdbc6760b182abcf8e4c94695dfa6] | committer: Hendrik Leppkes configure: enable the av1_frame_split bsf for the av1 decoder The BSF is required to make use of the AV1 decoder, thus configure should also ensure it is built. > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=0143b0d964ebdbc6760b182abcf8e4c94695dfa6 --- configure | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/configure b/configure index 6e012e44bc..ba5793b2ff 100755 --- a/configure +++ b/configure @@ -2781,7 +2781,7 @@ atrac3al_decoder_select="mdct" atrac3p_decoder_select="mdct sinewin" atrac3pal_decoder_select="mdct sinewin" atrac9_decoder_select="mdct" -av1_decoder_select="cbs_av1" +av1_decoder_select="av1_frame_split_bsf cbs_av1" bink_decoder_select="blockdsp hpeldsp" binkaudio_dct_decoder_select="mdct rdft dct sinewin wma_freqs" binkaudio_rdft_decoder_select="mdct rdft sinewin wma_freqs" ___ 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: enable the av1_frame_split bsf for the av1 decoder
ffmpeg | branch: master | Hendrik Leppkes | Thu Aug 18 21:00:28 2022 +0200| [89ea7a2442ec3466875c81ca376bba6b6426be45] | committer: Hendrik Leppkes configure: enable the av1_frame_split bsf for the av1 decoder The BSF is required to make use of the AV1 decoder, thus configure should also ensure it is built. > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=89ea7a2442ec3466875c81ca376bba6b6426be45 --- configure | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/configure b/configure index ea50c94002..932ea5b553 100755 --- a/configure +++ b/configure @@ -2789,7 +2789,7 @@ atrac3al_decoder_select="mdct" atrac3p_decoder_select="mdct sinewin" atrac3pal_decoder_select="mdct sinewin" atrac9_decoder_select="mdct" -av1_decoder_select="cbs_av1" +av1_decoder_select="av1_frame_split_bsf cbs_av1" bink_decoder_select="blockdsp hpeldsp" binkaudio_dct_decoder_select="mdct rdft dct sinewin wma_freqs" binkaudio_rdft_decoder_select="mdct rdft sinewin wma_freqs" ___ 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] avfilter/f_ebur128: multiply in integer first, before dividing in float
ffmpeg | branch: master | Hendrik Leppkes | Tue Apr 5 22:37:22 2022 +0200| [cd96211ace4e27d00ed8bf92955e48ebff73] | committer: Hendrik Leppkes avfilter/f_ebur128: multiply in integer first, before dividing in float Restores the order of operations from before 15a1104, which reduces errors from floating point calculations, and fixes FATE on mingw64. > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=cd96211ace4e27d00ed8bf92955e48ebff73 --- libavfilter/f_ebur128.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/libavfilter/f_ebur128.c b/libavfilter/f_ebur128.c index 1b1bcf1bff..a036aa0c86 100644 --- a/libavfilter/f_ebur128.c +++ b/libavfilter/f_ebur128.c @@ -768,7 +768,7 @@ static int filter_frame(AVFilterLink *inlink, AVFrame *insamples) /* get lower loudness to consider */ n = 0; -nb_pow = LRA_LOWER_PRC * 0.01 * nb_powers + 0.5; +nb_pow = LRA_LOWER_PRC * nb_powers * 0.01 + 0.5; for (i = gate_hist_pos; i < HIST_SIZE; i++) { n += ebur128->i3000.histogram[i].count; if (n >= nb_pow) { @@ -779,7 +779,7 @@ static int filter_frame(AVFilterLink *inlink, AVFrame *insamples) /* get higher loudness to consider */ n = nb_powers; -nb_pow = LRA_HIGHER_PRC * 0.01 * nb_powers + 0.5; +nb_pow = LRA_HIGHER_PRC * nb_powers * 0.01 + 0.5; for (i = HIST_SIZE - 1; i >= 0; i--) { n -= FFMIN(n, ebur128->i3000.histogram[i].count); if (n < nb_pow) { ___ 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] pthread_frame: introduce a codec callback to update the user-facing context
ffmpeg | branch: master | Hendrik Leppkes | Mon Jul 6 02:29:59 2020 +0200| [82ebe0c7968262c7e27700b93bc58be0d7228458] | committer: James Almer pthread_frame: introduce a codec callback to update the user-facing context > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=82ebe0c7968262c7e27700b93bc58be0d7228458 --- libavcodec/codec.h | 5 + libavcodec/pthread_frame.c | 2 ++ 2 files changed, 7 insertions(+) diff --git a/libavcodec/codec.h b/libavcodec/codec.h index 50a22f6e3c..de050b2815 100644 --- a/libavcodec/codec.h +++ b/libavcodec/codec.h @@ -258,6 +258,11 @@ typedef struct AVCodec { * dst and src will (rarely) point to the same context, in which case memcpy should be skipped. */ int (*update_thread_context)(struct AVCodecContext *dst, const struct AVCodecContext *src); + +/** + * Copy variables back to the user-facing context + */ +int (*update_thread_context_for_user)(struct AVCodecContext *dst, const struct AVCodecContext *src); /** @} */ /** diff --git a/libavcodec/pthread_frame.c b/libavcodec/pthread_frame.c index 9176027f15..ae5b000d97 100644 --- a/libavcodec/pthread_frame.c +++ b/libavcodec/pthread_frame.c @@ -326,6 +326,8 @@ FF_DISABLE_DEPRECATION_WARNINGS dst->coded_frame = src->coded_frame; FF_ENABLE_DEPRECATION_WARNINGS #endif +if (dst->codec->update_thread_context_for_user) +err = dst->codec->update_thread_context_for_user(dst, src); } else { if (dst->codec->update_thread_context) err = dst->codec->update_thread_context(dst, src); ___ 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: set AV_CODEC_CAP_CHANNEL_CONF on decoders which set their own channels
ffmpeg | branch: master | Hendrik Leppkes | Sat Dec 5 11:41:23 2020 +0100| [494f868e93d1d671497d0d0884368f015eb7d31e] | committer: Hendrik Leppkes avcodec: set AV_CODEC_CAP_CHANNEL_CONF on decoders which set their own channels The decoders in this set either have a fixed channel count, or read it from the bitstream, and thus do not require the channel count as external information. Fixes various regressions since 81503ac58a763a36b1f57264013b1e76acb62b68, which requires a valid channel count for decoders which do not set this capability. Signed-off-by: Hendrik Leppkes > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=494f868e93d1d671497d0d0884368f015eb7d31e --- libavcodec/alac.c| 2 +- libavcodec/alsdec.c | 2 +- libavcodec/amrnbdec.c| 2 +- libavcodec/amrwbdec.c| 2 +- libavcodec/atrac9dec.c | 2 +- libavcodec/audiotoolboxdec.c | 2 +- libavcodec/bmvaudio.c| 2 +- libavcodec/cngdec.c | 2 +- libavcodec/dsicinaudio.c | 2 +- libavcodec/dss_sp.c | 2 +- libavcodec/evrcdec.c | 2 +- libavcodec/g722dec.c | 2 +- libavcodec/g726.c| 4 ++-- libavcodec/gsmdec.c | 4 ++-- libavcodec/ilbcdec.c | 2 +- libavcodec/imc.c | 2 +- libavcodec/libcodec2.c | 2 +- libavcodec/libgsmdec.c | 4 ++-- libavcodec/libilbc.c | 2 +- libavcodec/libopencore-amr.c | 4 ++-- libavcodec/libopusdec.c | 2 +- libavcodec/libspeexdec.c | 2 +- libavcodec/libvorbisdec.c| 2 +- libavcodec/metasound.c | 2 +- libavcodec/mlpdec.c | 4 ++-- libavcodec/mpc8.c| 2 +- libavcodec/nellymoserdec.c | 2 +- libavcodec/opusdec.c | 2 +- libavcodec/pcm-bluray.c | 2 +- libavcodec/qcelpdec.c| 2 +- libavcodec/qdm2.c| 2 +- libavcodec/qdmc.c| 2 +- libavcodec/ra144dec.c| 2 +- libavcodec/ra288.c | 2 +- libavcodec/sbcdec.c | 2 +- libavcodec/sipr.c| 2 +- libavcodec/sonic.c | 2 +- libavcodec/takdec.c | 2 +- libavcodec/tta.c | 2 +- libavcodec/twinvqdec.c | 2 +- libavcodec/vima.c| 2 +- libavcodec/vorbisdec.c | 2 +- libavcodec/wavpack.c | 2 +- libavcodec/ws-snd1.c | 2 +- 44 files changed, 49 insertions(+), 49 deletions(-) diff --git a/libavcodec/alac.c b/libavcodec/alac.c index 9040673528..7edbb06a3e 100644 --- a/libavcodec/alac.c +++ b/libavcodec/alac.c @@ -625,7 +625,7 @@ AVCodec ff_alac_decoder = { .init = alac_decode_init, .close = alac_decode_close, .decode = alac_decode_frame, -.capabilities = AV_CODEC_CAP_DR1 | AV_CODEC_CAP_FRAME_THREADS, +.capabilities = AV_CODEC_CAP_DR1 | AV_CODEC_CAP_FRAME_THREADS | AV_CODEC_CAP_CHANNEL_CONF, .caps_internal = FF_CODEC_CAP_INIT_CLEANUP, .priv_class = _class }; diff --git a/libavcodec/alsdec.c b/libavcodec/alsdec.c index c2c460a29c..c318ad088e 100644 --- a/libavcodec/alsdec.c +++ b/libavcodec/alsdec.c @@ -2179,6 +2179,6 @@ AVCodec ff_als_decoder = { .close = decode_end, .decode = decode_frame, .flush = flush, -.capabilities = AV_CODEC_CAP_SUBFRAMES | AV_CODEC_CAP_DR1, +.capabilities = AV_CODEC_CAP_SUBFRAMES | AV_CODEC_CAP_DR1 | AV_CODEC_CAP_CHANNEL_CONF, .caps_internal = FF_CODEC_CAP_INIT_CLEANUP, }; diff --git a/libavcodec/amrnbdec.c b/libavcodec/amrnbdec.c index ea299acd4e..8e02d4cb20 100644 --- a/libavcodec/amrnbdec.c +++ b/libavcodec/amrnbdec.c @@ -1088,7 +1088,7 @@ AVCodec ff_amrnb_decoder = { .priv_data_size = sizeof(AMRContext), .init = amrnb_decode_init, .decode = amrnb_decode_frame, -.capabilities = AV_CODEC_CAP_DR1, +.capabilities = AV_CODEC_CAP_DR1 | AV_CODEC_CAP_CHANNEL_CONF, .sample_fmts= (const enum AVSampleFormat[]){ AV_SAMPLE_FMT_FLT, AV_SAMPLE_FMT_NONE }, }; diff --git a/libavcodec/amrwbdec.c b/libavcodec/amrwbdec.c index 555c4bc45d..070f276904 100644 --- a/libavcodec/amrwbdec.c +++ b/libavcodec/amrwbdec.c @@ -1283,7 +1283,7 @@ AVCodec ff_amrwb_decoder = { .priv_data_size = sizeof(AMRWBContext), .init = amrwb_decode_init, .decode = amrwb_decode_frame, -.capabilities = AV_CODEC_CAP_DR1, +.capabilities = AV_CODEC_CAP_DR1 | AV_CODEC_CAP_CHANNEL_CONF, .sample_fmts= (const enum AVSampleFormat[]){ AV_SAMPLE_FMT_FLT, AV_SAMPLE_FMT_NONE }, }; diff --git a/libavcodec/atrac9dec.c b/libavcodec/atrac9dec.c index f0fcd0cb13..f2413ef68a 100644 --- a/libavcodec/atrac9dec.c +++ b/libavcodec/atrac9dec.c @@ -996,5 +996,5 @@ AVCodec ff_atrac9_decoder = { .decode = atrac9_decode_frame, .flush = atrac9_decode_flush, .caps_internal = FF_CODEC_CAP_INIT_THREADS
[FFmpeg-cvslog] avcodec/dxva2: add AV1 decode support
ffmpeg | branch: master | Hendrik Leppkes | Thu Nov 5 14:13:14 2020 +0100| [8f4aec719e7c00cd75074ef34d99d2f2f22e622a] | committer: Hendrik Leppkes avcodec/dxva2: add AV1 decode support Signed-off-by: Hendrik Leppkes > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=8f4aec719e7c00cd75074ef34d99d2f2f22e622a --- Changelog | 1 + configure | 7 + libavcodec/Makefile| 2 + libavcodec/av1dec.c| 28 ++- libavcodec/dxva2.c | 10 +- libavcodec/dxva2_av1.c | 504 + libavcodec/hwaccels.h | 3 + libavcodec/version.h | 2 +- 8 files changed, 553 insertions(+), 4 deletions(-) diff --git a/Changelog b/Changelog index 8f5b319ef1..d8f151b02d 100644 --- a/Changelog +++ b/Changelog @@ -44,6 +44,7 @@ version : - ADPCM IMA AMV encoder - AMV muxer - NVDEC AV1 hwaccel +- DXVA2/D3D11VA hardware accelerated AV1 decoding version 4.3: diff --git a/configure b/configure index b8199e90ac..51e43fbf66 100755 --- a/configure +++ b/configure @@ -2918,6 +2918,12 @@ videotoolbox_hwaccel_deps="videotoolbox pthreads" videotoolbox_hwaccel_extralibs="-framework QuartzCore" xvmc_deps="X11_extensions_XvMClib_h" +av1_d3d11va_hwaccel_deps="d3d11va DXVA_PicParams_AV1" +av1_d3d11va_hwaccel_select="av1_decoder" +av1_d3d11va2_hwaccel_deps="d3d11va DXVA_PicParams_AV1" +av1_d3d11va2_hwaccel_select="av1_decoder" +av1_dxva2_hwaccel_deps="dxva2 DXVA_PicParams_AV1" +av1_dxva2_hwaccel_select="av1_decoder" av1_nvdec_hwaccel_deps="nvdec CUVIDAV1PICPARAMS" av1_nvdec_hwaccel_select="av1_decoder" av1_vaapi_hwaccel_deps="vaapi VADecPictureParameterBufferAV1_bit_depth_idx" @@ -6206,6 +6212,7 @@ enabled videotoolbox && { check_struct "sys/time.h sys/resource.h" "struct rusage" ru_maxrss +check_type "windows.h dxva.h" "DXVA_PicParams_AV1" -DWINAPI_FAMILY=WINAPI_FAMILY_DESKTOP_APP -D_CRT_BUILD_DESKTOP_APP=0 check_type "windows.h dxva.h" "DXVA_PicParams_HEVC" -DWINAPI_FAMILY=WINAPI_FAMILY_DESKTOP_APP -D_CRT_BUILD_DESKTOP_APP=0 check_type "windows.h dxva.h" "DXVA_PicParams_VP9" -DWINAPI_FAMILY=WINAPI_FAMILY_DESKTOP_APP -D_CRT_BUILD_DESKTOP_APP=0 check_type "windows.h d3d11.h" "ID3D11VideoDecoder" diff --git a/libavcodec/Makefile b/libavcodec/Makefile index 0c8aee39b3..b4777be4d4 100644 --- a/libavcodec/Makefile +++ b/libavcodec/Makefile @@ -912,6 +912,8 @@ OBJS-$(CONFIG_VAAPI) += vaapi_decode.o OBJS-$(CONFIG_VIDEOTOOLBOX) += videotoolbox.o OBJS-$(CONFIG_VDPAU) += vdpau.o +OBJS-$(CONFIG_AV1_D3D11VA_HWACCEL)+= dxva2_av1.o +OBJS-$(CONFIG_AV1_DXVA2_HWACCEL) += dxva2_av1.o OBJS-$(CONFIG_AV1_NVDEC_HWACCEL) += nvdec_av1.o OBJS-$(CONFIG_AV1_VAAPI_HWACCEL) += vaapi_av1.o OBJS-$(CONFIG_H263_VAAPI_HWACCEL) += vaapi_mpeg4.o diff --git a/libavcodec/av1dec.c b/libavcodec/av1dec.c index 1078f708f7..ad8e7d1dd5 100644 --- a/libavcodec/av1dec.c +++ b/libavcodec/av1dec.c @@ -317,7 +317,10 @@ static int get_pixel_format(AVCodecContext *avctx) uint8_t bit_depth; int ret; enum AVPixelFormat pix_fmt = AV_PIX_FMT_NONE; -#define HWACCEL_MAX (CONFIG_AV1_NVDEC_HWACCEL + CONFIG_AV1_VAAPI_HWACCEL) +#define HWACCEL_MAX (CONFIG_AV1_DXVA2_HWACCEL + \ + CONFIG_AV1_D3D11VA_HWACCEL * 2 + \ + CONFIG_AV1_NVDEC_HWACCEL + \ + CONFIG_AV1_VAAPI_HWACCEL) enum AVPixelFormat pix_fmts[HWACCEL_MAX + 2], *fmtp = pix_fmts; if (seq->seq_profile == 2 && seq->color_config.high_bitdepth) @@ -380,6 +383,13 @@ static int get_pixel_format(AVCodecContext *avctx) switch (s->pix_fmt) { case AV_PIX_FMT_YUV420P: +#if CONFIG_AV1_DXVA2_HWACCEL +*fmtp++ = AV_PIX_FMT_DXVA2_VLD; +#endif +#if CONFIG_AV1_D3D11VA_HWACCEL +*fmtp++ = AV_PIX_FMT_D3D11VA_VLD; +*fmtp++ = AV_PIX_FMT_D3D11; +#endif #if CONFIG_AV1_NVDEC_HWACCEL *fmtp++ = AV_PIX_FMT_CUDA; #endif @@ -388,6 +398,13 @@ static int get_pixel_format(AVCodecContext *avctx) #endif break; case AV_PIX_FMT_YUV420P10: +#if CONFIG_AV1_DXVA2_HWACCEL +*fmtp++ = AV_PIX_FMT_DXVA2_VLD; +#endif +#if CONFIG_AV1_D3D11VA_HWACCEL +*fmtp++ = AV_PIX_FMT_D3D11VA_VLD; +*fmtp++ = AV_PIX_FMT_D3D11; +#endif #if CONFIG_AV1_NVDEC_HWACCEL *fmtp++ = AV_PIX_FMT_CUDA; #endif @@ -974,6 +991,15 @@ AVCodec ff_av1_decoder = { .flush = av1_decode_flush, .profiles = NULL_IF_CONFIG_SMALL(ff_av1_profiles), .hw_configs= (const AVCodecHWConfigInternal * []) { +#if CONFIG_AV1_DXVA2_HWACCEL +HWACCEL_DXVA2(av1), +#endif +#if CONFIG_AV1_D3D11VA_HWACCEL +HWACCEL_D3D11VA(av1), +#end
[FFmpeg-cvslog] avcodec/hevc: export chroma sample location
ffmpeg | branch: master | Hendrik Leppkes | Wed Apr 11 13:46:10 2018 +0200| [8ee6557c2e93166a03ef8588a09674e4a083d43b] | committer: Hendrik Leppkes avcodec/hevc: export chroma sample location > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=8ee6557c2e93166a03ef8588a09674e4a083d43b --- libavcodec/hevcdec.c | 9 + 1 file changed, 9 insertions(+) diff --git a/libavcodec/hevcdec.c b/libavcodec/hevcdec.c index c9e28f5826..b63cba6c25 100644 --- a/libavcodec/hevcdec.c +++ b/libavcodec/hevcdec.c @@ -348,6 +348,15 @@ static void export_stream_params(HEVCContext *s, const HEVCSPS *sps) avctx->colorspace = AVCOL_SPC_UNSPECIFIED; } +avctx->chroma_sample_location = AVCHROMA_LOC_UNSPECIFIED; +if (sps->chroma_format_idc == 1) { +if (sps->vui.chroma_loc_info_present_flag) { +if (sps->vui.chroma_sample_loc_type_top_field <= 5) +avctx->chroma_sample_location = sps->vui.chroma_sample_loc_type_top_field + 1; +} else +avctx->chroma_sample_location = AVCHROMA_LOC_LEFT; +} + if (vps->vps_timing_info_present_flag) { num = vps->vps_num_units_in_tick; den = vps->vps_time_scale; ___ 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: check for a sufficiently recent enough AMF version
ffmpeg | branch: master | Hendrik Leppkes | Mon Sep 9 00:49:23 2019 +0200| [4e759b56754a2d9843502c4a177bb66eb95d5ed8] | committer: Hendrik Leppkes configure: check for a sufficiently recent enough AMF version Due to the recent addition of Vulkan support to AMF, we require more recent headers that include the new structures, which have been available since AMF 1.4.9 released in September 2018. Fixes Ticket #8125 > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=4e759b56754a2d9843502c4a177bb66eb95d5ed8 --- configure | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/configure b/configure index 4141c1e8f4..8413826f9e 100755 --- a/configure +++ b/configure @@ -6617,7 +6617,7 @@ EOF enabled amf && check_cpp_condition amf "AMF/core/Version.h" \ -"(AMF_VERSION_MAJOR << 48 | AMF_VERSION_MINOR << 32 | AMF_VERSION_RELEASE << 16 | AMF_VERSION_BUILD_NUM) >= 0x0001000400040001" +"(AMF_VERSION_MAJOR << 48 | AMF_VERSION_MINOR << 32 | AMF_VERSION_RELEASE << 16 | AMF_VERSION_BUILD_NUM) >= 0x000100040009" # Funny iconv installations are not unusual, so check it after all flags have been set if enabled libc_iconv; then ___ 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: don't include TARGET_PATH in the sample path needlessly
ffmpeg | branch: master | Hendrik Leppkes | Thu Apr 4 00:17:43 2019 +0200| [a87774636b870ee1888bec24327062baf4841ea0] | committer: Hendrik Leppkes tests: don't include TARGET_PATH in the sample path needlessly The transcode() helper function will already prepend the TARGET_PATH to the sample path, if its a relative path. This avoids an issue on Windows, where the relative path check could fail. > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=a87774636b870ee1888bec24327062baf4841ea0 --- tests/fate/ffmpeg.mak | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/fate/ffmpeg.mak b/tests/fate/ffmpeg.mak index af7282f9ab..71ab2f1f63 100644 --- a/tests/fate/ffmpeg.mak +++ b/tests/fate/ffmpeg.mak @@ -95,7 +95,7 @@ fate-copy-trac2211-avi: CMD = transcode "h264 -r 14" $(TARGET_SAMPLES)/h264/bbc2 FATE_STREAMCOPY-$(call ENCDEC, APNG, APNG) += fate-copy-apng fate-copy-apng: fate-lavf-apng -fate-copy-apng: CMD = transcode apng "$(TARGET_PATH)/tests/data/lavf/lavf.apng" apng "-c:v copy" +fate-copy-apng: CMD = transcode apng tests/data/lavf/lavf.apng apng "-c:v copy" FATE_STREAMCOPY-$(call DEMMUX, OGG, OGG) += fate-limited_input_seek fate-limited_input_seek-copyts fate-limited_input_seek: $(TARGET_SAMPLES)/vorbis/moog_small.ogg ___ 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] lavfi/vf_srcnn: use avio_check instead of access
ffmpeg | branch: master | Hendrik Leppkes <h.lepp...@gmail.com> | Tue May 8 17:25:26 2018 +0200| [8007a86363930353a9df0007432fae73fc817dda] | committer: Hendrik Leppkes lavfi/vf_srcnn: use avio_check instead of access The filter uses avio for file access already, and avio_check is portable. Fixes trac #7192. > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=8007a86363930353a9df0007432fae73fc817dda --- configure | 2 +- libavfilter/vf_srcnn.c | 5 + 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/configure b/configure index 7c143238a8..6626111ff2 100755 --- a/configure +++ b/configure @@ -3389,7 +3389,7 @@ spectrumsynth_filter_deps="avcodec" spectrumsynth_filter_select="fft" spp_filter_deps="gpl avcodec" spp_filter_select="fft idctdsp fdctdsp me_cmp pixblockdsp" -srcnn_filter_deps="access avformat" +srcnn_filter_deps="avformat" stereo3d_filter_deps="gpl" subtitles_filter_deps="avformat avcodec libass" super2xsai_filter_deps="gpl" diff --git a/libavfilter/vf_srcnn.c b/libavfilter/vf_srcnn.c index dace2b99b5..edffebb278 100644 --- a/libavfilter/vf_srcnn.c +++ b/libavfilter/vf_srcnn.c @@ -28,9 +28,6 @@ #include "formats.h" #include "internal.h" #include "libavutil/opt.h" -#if HAVE_UNISTD_H -#include -#endif #include "vf_srcnn.h" #include "libavformat/avio.h" @@ -145,7 +142,7 @@ static av_cold int init(AVFilterContext* context) srcnn_context->conv3.size = 5; CHECK_ALLOCATION(allocate_copy_conv_data(_context->conv3, conv3_kernel, conv3_biases), ) } -else if (access(srcnn_context->config_file_path, R_OK) != -1){ +else if (avio_check(srcnn_context->config_file_path, AVIO_FLAG_READ) > 0){ if (avio_open(_file_context, srcnn_context->config_file_path, AVIO_FLAG_READ) < 0){ av_log(context, AV_LOG_ERROR, "failed to open configuration file\n"); return AVERROR(EIO); ___ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog
[FFmpeg-cvslog] avformat/tls_schannel: fix handling of EOF after avio changes
ffmpeg | branch: master | Hendrik Leppkes <h.lepp...@gmail.com> | Wed Apr 18 14:09:19 2018 +0200| [5c6365af454fb24f20d753ed99dd8e2b60e85035] | committer: Hendrik Leppkes avformat/tls_schannel: fix handling of EOF after avio changes > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=5c6365af454fb24f20d753ed99dd8e2b60e85035 --- libavformat/tls_schannel.c | 10 ++ 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/libavformat/tls_schannel.c b/libavformat/tls_schannel.c index 9a6e0c92e3..f41b007773 100644 --- a/libavformat/tls_schannel.c +++ b/libavformat/tls_schannel.c @@ -413,11 +413,13 @@ static int tls_read(URLContext *h, uint8_t *buf, int len) ret = ffurl_read(s->tcp, c->enc_buf + c->enc_buf_offset, c->enc_buf_size - c->enc_buf_offset); -if (ret < 0) { +if (ret == AVERROR_EOF) { +c->connection_closed = 1; +ret = 0; +} else if (ret < 0) { av_log(h, AV_LOG_ERROR, "Unable to read from socket\n"); return ret; -} else if (ret == 0) -c->connection_closed = 1; +} c->enc_buf_offset += ret; } @@ -515,7 +517,7 @@ cleanup: if (ret == 0 && !c->connection_closed) ret = AVERROR(EAGAIN); -return ret < 0 ? ret : 0; +return ret < 0 ? ret : AVERROR_EOF; } static int tls_write(URLContext *h, const uint8_t *buf, int len) ___ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog
[FFmpeg-cvslog] avformat/tls_schannel: fix handling of EOF after avio changes
ffmpeg | branch: release/4.0 | Hendrik Leppkes <h.lepp...@gmail.com> | Wed Apr 18 14:09:19 2018 +0200| [0b6de235b98ca3076e85adebc922b25df79080b7] | committer: Hendrik Leppkes avformat/tls_schannel: fix handling of EOF after avio changes (cherry picked from commit 5c6365af454fb24f20d753ed99dd8e2b60e85035) > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=0b6de235b98ca3076e85adebc922b25df79080b7 --- libavformat/tls_schannel.c | 10 ++ 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/libavformat/tls_schannel.c b/libavformat/tls_schannel.c index 9a6e0c92e3..f41b007773 100644 --- a/libavformat/tls_schannel.c +++ b/libavformat/tls_schannel.c @@ -413,11 +413,13 @@ static int tls_read(URLContext *h, uint8_t *buf, int len) ret = ffurl_read(s->tcp, c->enc_buf + c->enc_buf_offset, c->enc_buf_size - c->enc_buf_offset); -if (ret < 0) { +if (ret == AVERROR_EOF) { +c->connection_closed = 1; +ret = 0; +} else if (ret < 0) { av_log(h, AV_LOG_ERROR, "Unable to read from socket\n"); return ret; -} else if (ret == 0) -c->connection_closed = 1; +} c->enc_buf_offset += ret; } @@ -515,7 +517,7 @@ cleanup: if (ret == 0 && !c->connection_closed) ret = AVERROR(EAGAIN); -return ret < 0 ? ret : 0; +return ret < 0 ? ret : AVERROR_EOF; } static int tls_write(URLContext *h, const uint8_t *buf, int len) ___ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog
[FFmpeg-cvslog] configure: fix clang-cl check in the MSVC section
ffmpeg | branch: release/4.0 | Hendrik Leppkes <h.lepp...@gmail.com> | Wed Apr 18 16:33:13 2018 +0200| [a73b464118a71483241d3120c05e2b3bd871bb44] | committer: Hendrik Leppkes configure: fix clang-cl check in the MSVC section Without properly grouping the checks, the second test would execute for MSVC cl.exe, which results in configure getting stuck since cl.exe -? is an interactive paginated help screen, waiting for input. > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=a73b464118a71483241d3120c05e2b3bd871bb44 --- configure | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/configure b/configure index 535a59b737..dee507cb6a 100755 --- a/configure +++ b/configure @@ -4411,7 +4411,7 @@ probe_cc(){ _flags_filter=msvc_flags _ld_lib='lib%.a' _ld_path='-libpath:' -elif $_cc -nologo- 2>&1 | grep -q Microsoft || $_cc -v 2>&1 | grep -q clang && $_cc -? > /dev/null 2>&1; then +elif $_cc -nologo- 2>&1 | grep -q Microsoft || { $_cc -v 2>&1 | grep -q clang && $_cc -? > /dev/null 2>&1; }; then _type=msvc _ident=$($_cc 2>&1 | head -n1 | tr -d '\r') _DEPCMD='$(DEP$(1)) $(DEP$(1)FLAGS) $($(1)DEP_FLAGS) $< 2>&1 | awk '\''/including/ { sub(/^.*file: */, ""); gsub(/\\/, "/"); if (!match($$0, / /)) print "$@:", $$0 }'\'' > $(@:.o=.d)' ___ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog
[FFmpeg-cvslog] configure: fix clang-cl check in the MSVC section
ffmpeg | branch: master | Hendrik Leppkes <h.lepp...@gmail.com> | Wed Apr 18 16:33:13 2018 +0200| [638575cd0ba419a7ff8143d67a8cc8c26c526ceb] | committer: Hendrik Leppkes configure: fix clang-cl check in the MSVC section Without properly grouping the checks, the second test would execute for MSVC cl.exe, which results in configure getting stuck since cl.exe -? is an interactive paginated help screen, waiting for input. > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=638575cd0ba419a7ff8143d67a8cc8c26c526ceb --- configure | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/configure b/configure index 535a59b737..dee507cb6a 100755 --- a/configure +++ b/configure @@ -4411,7 +4411,7 @@ probe_cc(){ _flags_filter=msvc_flags _ld_lib='lib%.a' _ld_path='-libpath:' -elif $_cc -nologo- 2>&1 | grep -q Microsoft || $_cc -v 2>&1 | grep -q clang && $_cc -? > /dev/null 2>&1; then +elif $_cc -nologo- 2>&1 | grep -q Microsoft || { $_cc -v 2>&1 | grep -q clang && $_cc -? > /dev/null 2>&1; }; then _type=msvc _ident=$($_cc 2>&1 | head -n1 | tr -d '\r') _DEPCMD='$(DEP$(1)) $(DEP$(1)FLAGS) $($(1)DEP_FLAGS) $< 2>&1 | awk '\''/including/ { sub(/^.*file: */, ""); gsub(/\\/, "/"); if (!match($$0, / /)) print "$@:", $$0 }'\'' > $(@:.o=.d)' ___ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog
[FFmpeg-cvslog] avcodec/aac_ac3_parser: account for data already in the parsing buffer
ffmpeg | branch: master | Hendrik Leppkes <h.lepp...@gmail.com> | Thu Apr 5 17:09:35 2018 +0200| [8df8a9299364016027825a67534b93cd2b6af473] | committer: Hendrik Leppkes avcodec/aac_ac3_parser: account for data already in the parsing buffer If a frame starts very close to a packet boundary, the start code may already have been added to the parsing buffer, indicated by a small negative value of "i", while the header is still being tracked in the "state" variable. Reduce the remaining size accordingly, otherwise trying to find the next frame could skip over the frame header and lump two frames together as one. > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=8df8a9299364016027825a67534b93cd2b6af473 --- libavcodec/aac_ac3_parser.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/libavcodec/aac_ac3_parser.c b/libavcodec/aac_ac3_parser.c index 019074b0dd..54e459844f 100644 --- a/libavcodec/aac_ac3_parser.c +++ b/libavcodec/aac_ac3_parser.c @@ -60,6 +60,9 @@ get_next: s->remaining_size += i; goto get_next; } +else if (i < 0) { +s->remaining_size += i; +} } } } ___ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog
[FFmpeg-cvslog] avcodec/vp9: add profile 2 10-bit DXVA2/D3D11 decoding support
ffmpeg | branch: master | Hendrik Leppkes <h.lepp...@gmail.com> | Mon May 29 12:09:47 2017 +0200| [7e20c8f5ebe96de94694be10e24b791e1ed4ea2d] | committer: Hendrik Leppkes avcodec/vp9: add profile 2 10-bit DXVA2/D3D11 decoding support Fixes trac ticket #7099. > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=7e20c8f5ebe96de94694be10e24b791e1ed4ea2d --- libavcodec/vp9.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libavcodec/vp9.c b/libavcodec/vp9.c index 0fac638ec9..b1178c9c0c 100644 --- a/libavcodec/vp9.c +++ b/libavcodec/vp9.c @@ -188,6 +188,7 @@ static int update_size(AVCodecContext *avctx, int w, int h) switch (s->pix_fmt) { case AV_PIX_FMT_YUV420P: +case AV_PIX_FMT_YUV420P10: #if CONFIG_VP9_DXVA2_HWACCEL *fmtp++ = AV_PIX_FMT_DXVA2_VLD; #endif @@ -202,7 +203,6 @@ static int update_size(AVCodecContext *avctx, int w, int h) *fmtp++ = AV_PIX_FMT_VAAPI; #endif break; -case AV_PIX_FMT_YUV420P10: case AV_PIX_FMT_YUV420P12: #if CONFIG_VP9_NVDEC_HWACCEL *fmtp++ = AV_PIX_FMT_CUDA; ___ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog
[FFmpeg-cvslog] avcodec/dxva2: add VP9 10-bit Profile2 mode mappings
ffmpeg | branch: master | Hendrik Leppkes <h.lepp...@gmail.com> | Wed Apr 11 13:59:36 2018 +0200| [b4159d959394db8be59c8b2c68e4bea227fc069d] | committer: Hendrik Leppkes avcodec/dxva2: add VP9 10-bit Profile2 mode mappings > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=b4159d959394db8be59c8b2c68e4bea227fc069d --- libavcodec/dxva2.c | 8 +++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/libavcodec/dxva2.c b/libavcodec/dxva2.c index 6d831599af..32416112bf 100644 --- a/libavcodec/dxva2.c +++ b/libavcodec/dxva2.c @@ -44,6 +44,7 @@ DEFINE_GUID(ff_DXVA2_ModeVC1_D2010, 0x1b81beA4, 0xa0c7,0x11d3,0xb9,0x84,0x0 DEFINE_GUID(ff_DXVA2_ModeHEVC_VLD_Main, 0x5b11d51b, 0x2f4c,0x4452,0xbc,0xc3,0x09,0xf2,0xa1,0x16,0x0c,0xc0); DEFINE_GUID(ff_DXVA2_ModeHEVC_VLD_Main10,0x107af0e0, 0xef1a,0x4d19,0xab,0xa8,0x67,0xa1,0x63,0x07,0x3d,0x13); DEFINE_GUID(ff_DXVA2_ModeVP9_VLD_Profile0,0x463707f8,0xa1d0,0x4585,0x87,0x6d,0x83,0xaa,0x6d,0x60,0xb8,0x9e); +DEFINE_GUID(ff_DXVA2_ModeVP9_VLD_10bit_Profile2,0xa4c749ef,0x6ecf,0x48aa,0x84,0x48,0x50,0xa7,0xa1,0x16,0x5f,0xf7); DEFINE_GUID(ff_DXVA2_NoEncrypt, 0x1b81beD0, 0xa0c7,0x11d3,0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5); DEFINE_GUID(ff_GUID_NULL,0x, 0x,0x,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00); DEFINE_GUID(ff_IID_IDirectXVideoDecoderService, 0xfc51a551,0xd5e7,0x11d9,0xaf,0x55,0x00,0x05,0x4e,0x43,0xff,0x02); @@ -67,6 +68,10 @@ static const int prof_hevc_main[]= {FF_PROFILE_HEVC_MAIN, FF_PROFILE_UNKNOWN}; static const int prof_hevc_main10[] = {FF_PROFILE_HEVC_MAIN_10, FF_PROFILE_UNKNOWN}; +static const int prof_vp9_profile0[] = {FF_PROFILE_VP9_0, +FF_PROFILE_UNKNOWN}; +static const int prof_vp9_profile2[] = {FF_PROFILE_VP9_2, +FF_PROFILE_UNKNOWN}; static const dxva_mode dxva_modes[] = { /* MPEG-2 */ @@ -90,7 +95,8 @@ static const dxva_mode dxva_modes[] = { { _DXVA2_ModeHEVC_VLD_Main, AV_CODEC_ID_HEVC, prof_hevc_main }, /* VP8/9 */ -{ _DXVA2_ModeVP9_VLD_Profile0,AV_CODEC_ID_VP9 }, +{ _DXVA2_ModeVP9_VLD_Profile0, AV_CODEC_ID_VP9, prof_vp9_profile0 }, +{ _DXVA2_ModeVP9_VLD_10bit_Profile2, AV_CODEC_ID_VP9, prof_vp9_profile2 }, { NULL, 0 }, }; ___ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog
[FFmpeg-cvslog] spdifenc: support ac3 core+eac3 dependent streams
ffmpeg | branch: master | Hendrik Leppkes <h.lepp...@gmail.com> | Tue Apr 3 12:35:27 2018 +0200| [3e9d676192fc6ef719a904f8a2d114efec03d7c1] | committer: Hendrik Leppkes spdifenc: support ac3 core+eac3 dependent streams Such streams are found on Blu-ray, and identified as EAC3 type in avformat, while the bitstream of the core stream is actually a pure AC3 frame. Adjust the parsing accordingly, since AC3 frames always hold 6 blocks and the numblkscod syntax element is not present. > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=3e9d676192fc6ef719a904f8a2d114efec03d7c1 --- libavformat/spdifenc.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/libavformat/spdifenc.c b/libavformat/spdifenc.c index 3a50aebbef..9514ff8e10 100644 --- a/libavformat/spdifenc.c +++ b/libavformat/spdifenc.c @@ -118,7 +118,8 @@ static int spdif_header_eac3(AVFormatContext *s, AVPacket *pkt) static const uint8_t eac3_repeat[4] = {6, 3, 2, 1}; int repeat = 1; -if ((pkt->data[4] & 0xc0) != 0xc0) /* fscod */ +int bsid = pkt->data[5] >> 3; +if (bsid > 10 && (pkt->data[4] & 0xc0) != 0xc0) /* fscod */ repeat = eac3_repeat[(pkt->data[4] & 0x30) >> 4]; /* numblkscod */ ctx->hd_buf = av_fast_realloc(ctx->hd_buf, >hd_buf_size, ctx->hd_buf_filled + pkt->size); ___ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog
[FFmpeg-cvslog] Revert "libavcodec/utils.c: simplify avcodec locking with atomics"
ffmpeg | branch: master | Hendrik Leppkes <h.lepp...@gmail.com> | Mon Dec 11 20:59:56 2017 +0100| [fd542b6f2026f1aa163882ee0283958598a97c31] | committer: Hendrik Leppkes Revert "libavcodec/utils.c: simplify avcodec locking with atomics" This reverts commit 590136e78da3d091ea99ab5432543d47a559a461. Atomics are not required for this variable, because it is protected through the lock manager, and the use of atomics here is not compatible with the c11 emulation wrappersi. Fixes FATE on MSVC, among other setups which use the compat wrappers. > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=fd542b6f2026f1aa163882ee0283958598a97c31 --- libavcodec/internal.h | 1 + libavcodec/utils.c| 12 ++-- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/libavcodec/internal.h b/libavcodec/internal.h index 6deaf1d204..30cb9a0de1 100644 --- a/libavcodec/internal.h +++ b/libavcodec/internal.h @@ -241,6 +241,7 @@ int ff_init_buffer_info(AVCodecContext *s, AVFrame *frame); void ff_color_frame(AVFrame *frame, const int color[4]); +extern volatile int ff_avcodec_locked; int ff_lock_avcodec(AVCodecContext *log_ctx, const AVCodec *codec); int ff_unlock_avcodec(const AVCodec *codec); diff --git a/libavcodec/utils.c b/libavcodec/utils.c index baf09119fe..873f39f9bd 100644 --- a/libavcodec/utils.c +++ b/libavcodec/utils.c @@ -115,7 +115,7 @@ static int (*lockmgr_cb)(void **mutex, enum AVLockOp op) = NULL; #endif -static atomic_bool ff_avcodec_locked; +volatile int ff_avcodec_locked; static atomic_int entangled_thread_counter = ATOMIC_VAR_INIT(0); static void *codec_mutex; static void *avformat_mutex; @@ -1943,7 +1943,6 @@ int av_lockmgr_register(int (*cb)(void **mutex, enum AVLockOp op)) int ff_lock_avcodec(AVCodecContext *log_ctx, const AVCodec *codec) { -_Bool exp = 0; if (codec->caps_internal & FF_CODEC_CAP_INIT_THREADSAFE || !codec->init) return 0; @@ -1959,21 +1958,22 @@ int ff_lock_avcodec(AVCodecContext *log_ctx, const AVCodec *codec) atomic_load(_thread_counter)); if (!lockmgr_cb) av_log(log_ctx, AV_LOG_ERROR, "No lock manager is set, please see av_lockmgr_register()\n"); -atomic_store(_avcodec_locked, 1); +ff_avcodec_locked = 1; ff_unlock_avcodec(codec); return AVERROR(EINVAL); } -av_assert0(atomic_compare_exchange_strong(_avcodec_locked, , 1)); +av_assert0(!ff_avcodec_locked); +ff_avcodec_locked = 1; return 0; } int ff_unlock_avcodec(const AVCodec *codec) { -_Bool exp = 1; if (codec->caps_internal & FF_CODEC_CAP_INIT_THREADSAFE || !codec->init) return 0; -av_assert0(atomic_compare_exchange_strong(_avcodec_locked, , 0)); +av_assert0(ff_avcodec_locked); +ff_avcodec_locked = 0; atomic_fetch_add(_thread_counter, -1); if (lockmgr_cb) { if ((*lockmgr_cb)(_mutex, AV_LOCK_RELEASE)) ___ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog
[FFmpeg-cvslog] nvenc: factor context push/pop into functions
ffmpeg | branch: master | Hendrik Leppkes <h.lepp...@gmail.com> | Sat Nov 11 16:13:24 2017 +0100| [6fcbf39f9ec7dc21829577dd2b1906c7740d3fd1] | committer: Hendrik Leppkes nvenc: factor context push/pop into functions This reduces code repetition, and will allow adding further push/pop refinement for D3D11 devices in future commits. > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=6fcbf39f9ec7dc21829577dd2b1906c7740d3fd1 --- libavcodec/nvenc.c | 171 - 1 file changed, 76 insertions(+), 95 deletions(-) diff --git a/libavcodec/nvenc.c b/libavcodec/nvenc.c index e1d3316de3..c685d973c1 100644 --- a/libavcodec/nvenc.c +++ b/libavcodec/nvenc.c @@ -166,6 +166,37 @@ static av_cold int nvenc_load_libraries(AVCodecContext *avctx) return 0; } +static int nvenc_push_context(AVCodecContext *avctx) +{ +NvencContext *ctx= avctx->priv_data; +NvencDynLoadFunctions *dl_fn = >nvenc_dload_funcs; +CUresult cu_res; + +cu_res = dl_fn->cuda_dl->cuCtxPushCurrent(ctx->cu_context); +if (cu_res != CUDA_SUCCESS) { +av_log(avctx, AV_LOG_ERROR, "cuCtxPushCurrent failed\n"); +return AVERROR_EXTERNAL; +} + +return 0; +} + +static int nvenc_pop_context(AVCodecContext *avctx) +{ +NvencContext *ctx= avctx->priv_data; +NvencDynLoadFunctions *dl_fn = >nvenc_dload_funcs; +CUresult cu_res; +CUcontext dummy; + +cu_res = dl_fn->cuda_dl->cuCtxPopCurrent(); +if (cu_res != CUDA_SUCCESS) { +av_log(avctx, AV_LOG_ERROR, "cuCtxPopCurrent failed\n"); +return AVERROR_EXTERNAL; +} + +return 0; +} + static av_cold int nvenc_open_session(AVCodecContext *avctx) { NV_ENC_OPEN_ENCODE_SESSION_EX_PARAMS params = { 0 }; @@ -335,7 +366,6 @@ static av_cold int nvenc_check_device(AVCodecContext *avctx, int idx) int major, minor, ret; CUresult cu_res; CUdevice cu_device; -CUcontext dummy; int loglevel = AV_LOG_VERBOSE; if (ctx->device == LIST_DEVICES) @@ -378,11 +408,8 @@ static av_cold int nvenc_check_device(AVCodecContext *avctx, int idx) ctx->cu_context = ctx->cu_context_internal; -cu_res = dl_fn->cuda_dl->cuCtxPopCurrent(); -if (cu_res != CUDA_SUCCESS) { -av_log(avctx, AV_LOG_FATAL, "Failed popping CUDA context: 0x%x\n", (int)cu_res); +if ((ret = nvenc_pop_context(avctx)) < 0) goto fail2; -} if ((ret = nvenc_open_session(avctx)) < 0) goto fail2; @@ -398,20 +425,14 @@ static av_cold int nvenc_check_device(AVCodecContext *avctx, int idx) return 0; fail3: -cu_res = dl_fn->cuda_dl->cuCtxPushCurrent(ctx->cu_context); -if (cu_res != CUDA_SUCCESS) { -av_log(avctx, AV_LOG_ERROR, "cuCtxPushCurrent failed\n"); -return AVERROR_EXTERNAL; -} +if ((ret = nvenc_push_context(avctx)) < 0) +return ret; p_nvenc->nvEncDestroyEncoder(ctx->nvencoder); ctx->nvencoder = NULL; -cu_res = dl_fn->cuda_dl->cuCtxPopCurrent(); -if (cu_res != CUDA_SUCCESS) { -av_log(avctx, AV_LOG_ERROR, "cuCtxPopCurrent failed\n"); -return AVERROR_EXTERNAL; -} +if ((ret = nvenc_pop_context(avctx)) < 0) +return ret; fail2: dl_fn->cuda_dl->cuCtxDestroy(ctx->cu_context_internal); @@ -1031,8 +1052,6 @@ static av_cold int nvenc_setup_encoder(AVCodecContext *avctx) NV_ENC_PRESET_CONFIG preset_config = { 0 }; NVENCSTATUS nv_status = NV_ENC_SUCCESS; AVCPBProperties *cpb_props; -CUresult cu_res; -CUcontext dummy; int res = 0; int dw, dh; @@ -1123,19 +1142,15 @@ static av_cold int nvenc_setup_encoder(AVCodecContext *avctx) if (res) return res; -cu_res = dl_fn->cuda_dl->cuCtxPushCurrent(ctx->cu_context); -if (cu_res != CUDA_SUCCESS) { -av_log(avctx, AV_LOG_ERROR, "cuCtxPushCurrent failed\n"); -return AVERROR_EXTERNAL; -} +res = nvenc_push_context(avctx); +if (res < 0) +return res; nv_status = p_nvenc->nvEncInitializeEncoder(ctx->nvencoder, >init_encode_params); -cu_res = dl_fn->cuda_dl->cuCtxPopCurrent(); -if (cu_res != CUDA_SUCCESS) { -av_log(avctx, AV_LOG_ERROR, "cuCtxPopCurrent failed\n"); -return AVERROR_EXTERNAL; -} +res = nvenc_pop_context(avctx); +if (res < 0) +return res; if (nv_status != NV_ENC_SUCCESS) { return nvenc_print_error(avctx, nv_status, "InitializeEncoder failed"); @@ -1239,9 +1254,6 @@ static av_cold int nvenc_alloc_surface(AVCodecContext *avctx, int idx) static av_cold int nvenc_setup_surfaces(AVCodecContext *avctx) { NvencContext *ctx = avctx->priv_data; -NvencDynLoadFunctions *dl_fn = >nvenc_dload_funcs; -CUres
[FFmpeg-cvslog] nvenc: support d3d11 surface input
ffmpeg | branch: master | Hendrik Leppkes <h.lepp...@gmail.com> | Sat Nov 11 16:51:58 2017 +0100| [bff6d98ba3e70bb27249579df600e2c845264b2c] | committer: Hendrik Leppkes nvenc: support d3d11 surface input > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=bff6d98ba3e70bb27249579df600e2c845264b2c --- libavcodec/nvenc.c | 103 ++--- libavcodec/nvenc.h | 11 +- 2 files changed, 92 insertions(+), 22 deletions(-) diff --git a/libavcodec/nvenc.c b/libavcodec/nvenc.c index c685d973c1..0139e70c3b 100644 --- a/libavcodec/nvenc.c +++ b/libavcodec/nvenc.c @@ -45,6 +45,9 @@ const enum AVPixelFormat ff_nvenc_pix_fmts[] = { AV_PIX_FMT_0RGB32, AV_PIX_FMT_0BGR32, AV_PIX_FMT_CUDA, +#if CONFIG_D3D11VA +AV_PIX_FMT_D3D11, +#endif AV_PIX_FMT_NONE }; @@ -172,6 +175,9 @@ static int nvenc_push_context(AVCodecContext *avctx) NvencDynLoadFunctions *dl_fn = >nvenc_dload_funcs; CUresult cu_res; +if (ctx->d3d11_device) +return 0; + cu_res = dl_fn->cuda_dl->cuCtxPushCurrent(ctx->cu_context); if (cu_res != CUDA_SUCCESS) { av_log(avctx, AV_LOG_ERROR, "cuCtxPushCurrent failed\n"); @@ -188,6 +194,9 @@ static int nvenc_pop_context(AVCodecContext *avctx) CUresult cu_res; CUcontext dummy; +if (ctx->d3d11_device) +return 0; + cu_res = dl_fn->cuda_dl->cuCtxPopCurrent(); if (cu_res != CUDA_SUCCESS) { av_log(avctx, AV_LOG_ERROR, "cuCtxPopCurrent failed\n"); @@ -206,8 +215,13 @@ static av_cold int nvenc_open_session(AVCodecContext *avctx) params.version= NV_ENC_OPEN_ENCODE_SESSION_EX_PARAMS_VER; params.apiVersion = NVENCAPI_VERSION; -params.device = ctx->cu_context; -params.deviceType = NV_ENC_DEVICE_TYPE_CUDA; +if (ctx->d3d11_device) { +params.device = ctx->d3d11_device; +params.deviceType = NV_ENC_DEVICE_TYPE_DIRECTX; +} else { +params.device = ctx->cu_context; +params.deviceType = NV_ENC_DEVICE_TYPE_CUDA; +} ret = p_nvenc->nvEncOpenEncodeSessionEx(, >nvencoder); if (ret != NV_ENC_SUCCESS) { @@ -458,23 +472,48 @@ static av_cold int nvenc_setup_device(AVCodecContext *avctx) return AVERROR_BUG; } -if (avctx->pix_fmt == AV_PIX_FMT_CUDA || avctx->hw_frames_ctx || avctx->hw_device_ctx) { +if (avctx->pix_fmt == AV_PIX_FMT_CUDA || avctx->pix_fmt == AV_PIX_FMT_D3D11 || avctx->hw_frames_ctx || avctx->hw_device_ctx) { AVHWFramesContext *frames_ctx; AVHWDeviceContext *hwdev_ctx; -AVCUDADeviceContext *device_hwctx; +AVCUDADeviceContext *cuda_device_hwctx = NULL; +#if CONFIG_D3D11VA +AVD3D11VADeviceContext *d3d11_device_hwctx = NULL; +#endif int ret; if (avctx->hw_frames_ctx) { frames_ctx = (AVHWFramesContext*)avctx->hw_frames_ctx->data; -device_hwctx = frames_ctx->device_ctx->hwctx; +if (frames_ctx->format == AV_PIX_FMT_CUDA) +cuda_device_hwctx = frames_ctx->device_ctx->hwctx; +#if CONFIG_D3D11VA +else if (frames_ctx->format == AV_PIX_FMT_D3D11) +d3d11_device_hwctx = frames_ctx->device_ctx->hwctx; +#endif +else +return AVERROR(EINVAL); } else if (avctx->hw_device_ctx) { hwdev_ctx = (AVHWDeviceContext*)avctx->hw_device_ctx->data; -device_hwctx = hwdev_ctx->hwctx; +if (hwdev_ctx->type == AV_HWDEVICE_TYPE_CUDA) +cuda_device_hwctx = hwdev_ctx->hwctx; +#if CONFIG_D3D11VA +else if (hwdev_ctx->type == AV_HWDEVICE_TYPE_D3D11VA) +d3d11_device_hwctx = hwdev_ctx->hwctx; +#endif +else +return AVERROR(EINVAL); } else { return AVERROR(EINVAL); } -ctx->cu_context = device_hwctx->cuda_ctx; +if (cuda_device_hwctx) { +ctx->cu_context = cuda_device_hwctx->cuda_ctx; +} +#if CONFIG_D3D11VA +else if (d3d11_device_hwctx) { +ctx->d3d11_device = d3d11_device_hwctx->device; +ID3D11Device_AddRef(ctx->d3d11_device); +} +#endif ret = nvenc_open_session(avctx); if (ret < 0) @@ -1205,7 +1244,7 @@ static av_cold int nvenc_alloc_surface(AVCodecContext *avctx, int idx) NV_ENC_CREATE_BITSTREAM_BUFFER allocOut = { 0 }; allocOut.version = NV_ENC_CREATE_BITSTREAM_BUFFER_VER; -if (avctx->pix_fmt == AV_PIX_FMT_CUDA) { +if (avctx->pix_fmt == AV_PIX_FMT_CUDA || avctx->pix_fmt == AV_PIX_FMT_D3D11) { ctx->surfaces[idx].in_ref = av_frame_alloc(); if (!ctx->surfaces[idx].in_ref) return AVERROR(ENOMEM); @@ -1237,7 +1276,7 @@ static av_co
[FFmpeg-cvslog] vp9: move VP9SharedContext back to the top of VP9Context
ffmpeg | branch: master | Hendrik Leppkes <h.lepp...@gmail.com> | Tue Sep 19 10:45:41 2017 +0200| [b4ecf2b582f34ff898017836b7df865e6ad9ce92] | committer: Hendrik Leppkes vp9: move VP9SharedContext back to the top of VP9Context VP9SharedContext needs to be the first member so its properties can be safely accessed from hardware accelerators, without the need to share the full VP9Context. Fixes ticket #6674. > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=b4ecf2b582f34ff898017836b7df865e6ad9ce92 --- libavcodec/vp9dec.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libavcodec/vp9dec.h b/libavcodec/vp9dec.h index 96c0e43cd2..66573edc79 100644 --- a/libavcodec/vp9dec.h +++ b/libavcodec/vp9dec.h @@ -89,8 +89,8 @@ typedef struct VP9Block { typedef struct VP9TileData VP9TileData; typedef struct VP9Context { -VP9TileData *td; VP9SharedContext s; +VP9TileData *td; VP9DSPContext dsp; VideoDSPContext vdsp; ___ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog
[FFmpeg-cvslog] Use AVOnce as a static variable consistently
ffmpeg | branch: release/3.3 | Hendrik Leppkes <h.lepp...@gmail.com> | Mon May 22 12:00:23 2017 +0200| [8640339dbbb50a4031b71d092dad29fa036f4266] | committer: Hendrik Leppkes Use AVOnce as a static variable consistently Using AVOnce as a stack variable makes no sense as the state is lost when the function exits. This fixes repeated calls to av(filter/device)_register_all > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=8640339dbbb50a4031b71d092dad29fa036f4266 --- libavdevice/alldevices.c | 2 +- libavfilter/allfilters.c | 2 +- libavformat/allformats.c | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/libavdevice/alldevices.c b/libavdevice/alldevices.c index 280a260bd3..a8ed53ae5d 100644 --- a/libavdevice/alldevices.c +++ b/libavdevice/alldevices.c @@ -73,7 +73,7 @@ static void register_all(void) void avdevice_register_all(void) { -AVOnce control = AV_ONCE_INIT; +static AVOnce control = AV_ONCE_INIT; ff_thread_once(, register_all); } diff --git a/libavfilter/allfilters.c b/libavfilter/allfilters.c index ec6ec048e8..ba0949943a 100644 --- a/libavfilter/allfilters.c +++ b/libavfilter/allfilters.c @@ -381,7 +381,7 @@ static void register_all(void) void avfilter_register_all(void) { -AVOnce control = AV_ONCE_INIT; +static AVOnce control = AV_ONCE_INIT; ff_thread_once(, register_all); } diff --git a/libavformat/allformats.c b/libavformat/allformats.c index 09e62c3cfc..3e014c6063 100644 --- a/libavformat/allformats.c +++ b/libavformat/allformats.c @@ -384,7 +384,7 @@ static void register_all(void) void av_register_all(void) { -AVOnce control = AV_ONCE_INIT; +static AVOnce control = AV_ONCE_INIT; ff_thread_once(, register_all); } ___ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog
[FFmpeg-cvslog] Use AVOnce as a static variable consistently
ffmpeg | branch: master | Hendrik Leppkes <h.lepp...@gmail.com> | Mon May 22 12:00:23 2017 +0200| [9fb293cfd8b758b98f1f535a2867c7bf3a324af6] | committer: Hendrik Leppkes Use AVOnce as a static variable consistently Using AVOnce as a stack variable makes no sense as the state is lost when the function exits. This fixes repeated calls to av(filter/device)_register_all > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=9fb293cfd8b758b98f1f535a2867c7bf3a324af6 --- libavdevice/alldevices.c | 2 +- libavfilter/allfilters.c | 2 +- libavformat/allformats.c | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/libavdevice/alldevices.c b/libavdevice/alldevices.c index 280a260bd3..a8ed53ae5d 100644 --- a/libavdevice/alldevices.c +++ b/libavdevice/alldevices.c @@ -73,7 +73,7 @@ static void register_all(void) void avdevice_register_all(void) { -AVOnce control = AV_ONCE_INIT; +static AVOnce control = AV_ONCE_INIT; ff_thread_once(, register_all); } diff --git a/libavfilter/allfilters.c b/libavfilter/allfilters.c index 2bcfce77be..f8cd193dbe 100644 --- a/libavfilter/allfilters.c +++ b/libavfilter/allfilters.c @@ -390,7 +390,7 @@ static void register_all(void) void avfilter_register_all(void) { -AVOnce control = AV_ONCE_INIT; +static AVOnce control = AV_ONCE_INIT; ff_thread_once(, register_all); } diff --git a/libavformat/allformats.c b/libavformat/allformats.c index 62661d14a4..b3ffe0f2b6 100644 --- a/libavformat/allformats.c +++ b/libavformat/allformats.c @@ -385,7 +385,7 @@ static void register_all(void) void av_register_all(void) { -AVOnce control = AV_ONCE_INIT; +static AVOnce control = AV_ONCE_INIT; ff_thread_once(, register_all); } ___ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog
[FFmpeg-cvslog] movenc/isom: update vpcC box to version 1.0 of the specification
ffmpeg | branch: master | Hendrik Leppkes <h.lepp...@gmail.com> | Sat Apr 22 01:25:40 2017 +0200| [64ad44a3817a288168ba97f6c022160b940cd22e] | committer: Hendrik Leppkes movenc/isom: update vpcC box to version 1.0 of the specification This brings our generation of the vpcC box up to date to version 1.0 of the VP Codec ISO Media File Format Binding. Specifically, color/transfer properties are now written with values based on ISO/IEC 23001-8, which is the same reference specification the AVColor* enumerations are based on. > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=64ad44a3817a288168ba97f6c022160b940cd22e --- libavformat/movenc.c | 3 ++- libavformat/vpcc.c | 55 +--- 2 files changed, 7 insertions(+), 51 deletions(-) diff --git a/libavformat/movenc.c b/libavformat/movenc.c index d20d272f89..a6c0662cd0 100644 --- a/libavformat/movenc.c +++ b/libavformat/movenc.c @@ -1112,7 +1112,8 @@ static int mov_write_vpcc_tag(AVFormatContext *s, AVIOContext *pb, MOVTrack *tra avio_wb32(pb, 0); ffio_wfourcc(pb, "vpcC"); -avio_wb32(pb, 0); /* version & flags */ +avio_w8(pb, 1); /* version */ +avio_wb24(pb, 0); /* flags */ ff_isom_write_vpcc(s, pb, track->par); return update_size(pb, pos); } diff --git a/libavformat/vpcc.c b/libavformat/vpcc.c index 2390e1711c..df08de59a6 100644 --- a/libavformat/vpcc.c +++ b/libavformat/vpcc.c @@ -23,44 +23,6 @@ #include "libavutil/pixfmt.h" #include "vpcc.h" -enum VpxColorSpace -{ -VPX_COLOR_SPACE_UNSPECIFIED = 0, -VPX_COLOR_SPACE_BT601 = 1, -VPX_COLOR_SPACE_BT709 = 2, -VPX_COLOR_SPACE_SMPTE_170 = 3, -VPX_COLOR_SPACE_SMPTE_240 = 4, -VPX_COLOR_SPACE_BT2020_NCL = 5, -VPX_COLOR_SPACE_BT2020_CL = 6, -VPX_COLOR_SPACE_RGB = 7, -}; - -static int get_vpx_color_space(AVFormatContext *s, - enum AVColorSpace color_space) -{ -switch (color_space) { -case AVCOL_SPC_RGB: -return VPX_COLOR_SPACE_RGB; -case AVCOL_SPC_BT709: -return VPX_COLOR_SPACE_BT709; -case AVCOL_SPC_UNSPECIFIED: -return VPX_COLOR_SPACE_UNSPECIFIED; -case AVCOL_SPC_BT470BG: -return VPX_COLOR_SPACE_BT601; -case AVCOL_SPC_SMPTE170M: -return VPX_COLOR_SPACE_SMPTE_170; -case AVCOL_SPC_SMPTE240M: -return VPX_COLOR_SPACE_SMPTE_240; -case AVCOL_SPC_BT2020_NCL: -return VPX_COLOR_SPACE_BT2020_NCL; -case AVCOL_SPC_BT2020_CL: -return VPX_COLOR_SPACE_BT2020_CL; -default: -av_log(s, AV_LOG_ERROR, "Unsupported color space (%d)\n", color_space); -return -1; -} -} - enum VPX_CHROMA_SUBSAMPLING { VPX_SUBSAMPLING_420_VERTICAL = 0, @@ -100,12 +62,6 @@ static int get_bit_depth(AVFormatContext *s, enum AVPixelFormat pixel_format) return desc->comp[0].depth; } -static int get_vpx_transfer_function( -enum AVColorTransferCharacteristic transfer) -{ -return transfer == AVCOL_TRC_SMPTEST2084; -} - static int get_vpx_video_full_range_flag(enum AVColorRange color_range) { return color_range == AVCOL_RANGE_JPEG; @@ -117,14 +73,12 @@ int ff_isom_write_vpcc(AVFormatContext *s, AVIOContext *pb, int profile = par->profile; int level = par->level == FF_LEVEL_UNKNOWN ? 0 : par->level; int bit_depth = get_bit_depth(s, par->format); -int vpx_color_space = get_vpx_color_space(s, par->color_space); int vpx_chroma_subsampling = get_vpx_chroma_subsampling(s, par->format, par->chroma_location); -int vpx_transfer_function = get_vpx_transfer_function(par->color_trc); int vpx_video_full_range_flag = get_vpx_video_full_range_flag(par->color_range); -if (bit_depth < 0 || vpx_color_space < 0 || vpx_chroma_subsampling < 0) +if (bit_depth < 0 || vpx_chroma_subsampling < 0) return AVERROR_INVALIDDATA; if (profile == FF_PROFILE_UNKNOWN) { @@ -138,9 +92,10 @@ int ff_isom_write_vpcc(AVFormatContext *s, AVIOContext *pb, avio_w8(pb, profile); avio_w8(pb, level); -avio_w8(pb, (bit_depth << 4) | vpx_color_space); -avio_w8(pb, (vpx_chroma_subsampling << 4) | (vpx_transfer_function << 1) | -vpx_video_full_range_flag); +avio_w8(pb, (bit_depth << 4) | (vpx_chroma_subsampling << 1) | vpx_video_full_range_flag); +avio_w8(pb, par->color_primaries); +avio_w8(pb, par->color_trc); +avio_w8(pb, par->color_space); // vp9 does not have codec initialization data. avio_wb16(pb, 0); ___ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog
[FFmpeg-cvslog] Merge commit '9265364bec0af2e8b7c3a6de7bfc8291a0b70bca'
ffmpeg | branch: master | Hendrik Leppkes <h.lepp...@gmail.com> | Thu Apr 13 11:05:50 2017 +0200| [1849d0caa52f6748f59c75ee0d29adde9cb3451b] | committer: Hendrik Leppkes Merge commit '9265364bec0af2e8b7c3a6de7bfc8291a0b70bca' * commit '9265364bec0af2e8b7c3a6de7bfc8291a0b70bca': build: Separate avisynth and avxsynth support Mostly noop, since it could break linux configure with --enable-avisynth, and the configure code which was simplified isn't even present in ffmpeg. Only merged the cosmetic re-ordering in the Makefile. Merged-by: Hendrik Leppkes <h.lepp...@gmail.com> > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=1849d0caa52f6748f59c75ee0d29adde9cb3451b --- libavformat/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libavformat/Makefile b/libavformat/Makefile index a1dae894fe..6bdfbe6789 100644 --- a/libavformat/Makefile +++ b/libavformat/Makefile @@ -107,7 +107,6 @@ OBJS-$(CONFIG_AU_DEMUXER)+= au.o pcm.o OBJS-$(CONFIG_AU_MUXER) += au.o rawenc.o OBJS-$(CONFIG_AVI_DEMUXER) += avidec.o OBJS-$(CONFIG_AVI_MUXER) += avienc.o mpegtsenc.o avlanguage.o rawutils.o -OBJS-$(CONFIG_AVISYNTH_DEMUXER) += avisynth.o OBJS-$(CONFIG_AVM2_MUXER)+= swfenc.o swf.o OBJS-$(CONFIG_AVR_DEMUXER) += avr.o pcm.o OBJS-$(CONFIG_AVS_DEMUXER) += avs.o voc_packet.o vocdec.o voc.o @@ -534,6 +533,7 @@ OBJS-$(CONFIG_YUV4MPEGPIPE_DEMUXER) += yuv4mpegdec.o OBJS-$(CONFIG_YUV4MPEGPIPE_MUXER)+= yuv4mpegenc.o # external libraries +OBJS-$(CONFIG_AVISYNTH_DEMUXER) += avisynth.o OBJS-$(CONFIG_CHROMAPRINT_MUXER) += chromaprint.o OBJS-$(CONFIG_LIBGME_DEMUXER)+= libgme.o OBJS-$(CONFIG_LIBMODPLUG_DEMUXER)+= libmodplug.o == diff --cc libavformat/Makefile index a1dae894fe,6146cbe12a..6bdfbe6789 --- a/libavformat/Makefile +++ b/libavformat/Makefile @@@ -106,11 -84,9 +106,10 @@@ OBJS-$(CONFIG_AST_MUXER OBJS-$(CONFIG_AU_DEMUXER)+= au.o pcm.o OBJS-$(CONFIG_AU_MUXER) += au.o rawenc.o OBJS-$(CONFIG_AVI_DEMUXER) += avidec.o -OBJS-$(CONFIG_AVI_MUXER) += avienc.o +OBJS-$(CONFIG_AVI_MUXER) += avienc.o mpegtsenc.o avlanguage.o rawutils.o - OBJS-$(CONFIG_AVISYNTH_DEMUXER) += avisynth.o OBJS-$(CONFIG_AVM2_MUXER)+= swfenc.o swf.o -OBJS-$(CONFIG_AVS_DEMUXER) += avs.o voc_packet.o voc.o +OBJS-$(CONFIG_AVR_DEMUXER) += avr.o pcm.o +OBJS-$(CONFIG_AVS_DEMUXER) += avs.o voc_packet.o vocdec.o voc.o OBJS-$(CONFIG_BETHSOFTVID_DEMUXER) += bethsoftvid.o OBJS-$(CONFIG_BFI_DEMUXER) += bfi.o OBJS-$(CONFIG_BINK_DEMUXER) += bink.o @@@ -534,24 -378,13 +533,25 @@@ OBJS-$(CONFIG_YUV4MPEGPIPE_DEMUXER OBJS-$(CONFIG_YUV4MPEGPIPE_MUXER)+= yuv4mpegenc.o # external libraries + OBJS-$(CONFIG_AVISYNTH_DEMUXER) += avisynth.o +OBJS-$(CONFIG_CHROMAPRINT_MUXER) += chromaprint.o +OBJS-$(CONFIG_LIBGME_DEMUXER)+= libgme.o +OBJS-$(CONFIG_LIBMODPLUG_DEMUXER)+= libmodplug.o +OBJS-$(CONFIG_LIBNUT_DEMUXER)+= libnut.o +OBJS-$(CONFIG_LIBNUT_MUXER) += libnut.o +OBJS-$(CONFIG_LIBOPENMPT_DEMUXER)+= libopenmpt.o OBJS-$(CONFIG_LIBRTMP) += librtmp.o +OBJS-$(CONFIG_LIBSSH_PROTOCOL) += libssh.o +OBJS-$(CONFIG_LIBSMBCLIENT_PROTOCOL) += libsmbclient.o # protocols I/O +OBJS-$(CONFIG_ASYNC_PROTOCOL)+= async.o OBJS-$(CONFIG_APPLEHTTP_PROTOCOL)+= hlsproto.o +OBJS-$(CONFIG_BLURAY_PROTOCOL) += bluray.o +OBJS-$(CONFIG_CACHE_PROTOCOL)+= cache.o OBJS-$(CONFIG_CONCAT_PROTOCOL) += concat.o OBJS-$(CONFIG_CRYPTO_PROTOCOL) += crypto.o +OBJS-$(CONFIG_DATA_PROTOCOL) += data_uri.o OBJS-$(CONFIG_FFRTMPCRYPT_PROTOCOL) += rtmpcrypt.o rtmpdh.o OBJS-$(CONFIG_FFRTMPHTTP_PROTOCOL) += rtmphttp.o OBJS-$(CONFIG_FILE_PROTOCOL) += file.o ___ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog
[FFmpeg-cvslog] stdatomic/win32: only include the lean windows headers to avoid conflicts
ffmpeg | branch: master | Hendrik Leppkes <h.lepp...@gmail.com> | Tue Apr 4 09:33:23 2017 +0200| [9ac1e884365314765f75517e91563be0351f6bd1] | committer: Hendrik Leppkes stdatomic/win32: only include the lean windows headers to avoid conflicts > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=9ac1e884365314765f75517e91563be0351f6bd1 --- compat/atomics/win32/stdatomic.h | 1 + 1 file changed, 1 insertion(+) diff --git a/compat/atomics/win32/stdatomic.h b/compat/atomics/win32/stdatomic.h index fa7ef51..092f453 100644 --- a/compat/atomics/win32/stdatomic.h +++ b/compat/atomics/win32/stdatomic.h @@ -19,6 +19,7 @@ #ifndef COMPAT_ATOMICS_WIN32_STDATOMIC_H #define COMPAT_ATOMICS_WIN32_STDATOMIC_H +#define WIN32_LEAN_AND_MEAN #include #include #include ___ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog
[FFmpeg-cvslog] Merge commit '5a1d605ceae448b476a525f7368ec452000d1f26'
ffmpeg | branch: master | Hendrik Leppkes <h.lepp...@gmail.com> | Sat Apr 1 18:53:36 2017 +0200| [0f9ce9c5fcdb4ae9f990835f6579c33f7619e904] | committer: Hendrik Leppkes Merge commit '5a1d605ceae448b476a525f7368ec452000d1f26' * commit '5a1d605ceae448b476a525f7368ec452000d1f26': hwcontext_dxva2: split transfer_data() into upload/download functions Merged-by: Hendrik Leppkes <h.lepp...@gmail.com> > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=0f9ce9c5fcdb4ae9f990835f6579c33f7619e904 --- libavutil/hwcontext_dxva2.c | 53 - 1 file changed, 33 insertions(+), 20 deletions(-) diff --git a/libavutil/hwcontext_dxva2.c b/libavutil/hwcontext_dxva2.c index c5d93d1..89fedd2 100644 --- a/libavutil/hwcontext_dxva2.c +++ b/libavutil/hwcontext_dxva2.c @@ -325,12 +325,34 @@ fail: return err; } -static int dxva2_transfer_data(AVHWFramesContext *ctx, AVFrame *dst, - const AVFrame *src) +static int dxva2_transfer_data_to(AVHWFramesContext *ctx, AVFrame *dst, + const AVFrame *src) { -int download = !!src->hw_frames_ctx; +AVFrame *map; +int ret; + +map = av_frame_alloc(); +if (!map) +return AVERROR(ENOMEM); +map->format = dst->format; + +ret = dxva2_map_frame(ctx, map, dst, AV_HWFRAME_MAP_WRITE | AV_HWFRAME_MAP_OVERWRITE); +if (ret < 0) +goto fail; +av_image_copy(map->data, map->linesize, src->data, src->linesize, + ctx->sw_format, src->width, src->height); + +fail: +av_frame_free(); +return ret; +} + +static int dxva2_transfer_data_from(AVHWFramesContext *ctx, AVFrame *dst, +const AVFrame *src) +{ AVFrame *map; +ptrdiff_t src_linesize[4], dst_linesize[4]; int ret, i; map = av_frame_alloc(); @@ -338,25 +360,16 @@ static int dxva2_transfer_data(AVHWFramesContext *ctx, AVFrame *dst, return AVERROR(ENOMEM); map->format = dst->format; -ret = dxva2_map_frame(ctx, map, download ? src : dst, - download ? AV_HWFRAME_MAP_READ : - AV_HWFRAME_MAP_WRITE | AV_HWFRAME_MAP_OVERWRITE); +ret = dxva2_map_frame(ctx, map, src, AV_HWFRAME_MAP_READ); if (ret < 0) goto fail; -if (download) { -ptrdiff_t src_linesize[4], dst_linesize[4]; -for (i = 0; i < 4; i++) { -dst_linesize[i] = dst->linesize[i]; -src_linesize[i] = map->linesize[i]; -} -av_image_copy_uc_from(dst->data, dst_linesize, map->data, src_linesize, - ctx->sw_format, src->width, src->height); -} else { -av_image_copy(map->data, map->linesize, src->data, src->linesize, - ctx->sw_format, src->width, src->height); +for (i = 0; i < 4; i++) { +dst_linesize[i] = dst->linesize[i]; +src_linesize[i] = map->linesize[i]; } - +av_image_copy_uc_from(dst->data, dst_linesize, map->data, src_linesize, + ctx->sw_format, src->width, src->height); fail: av_frame_free(); return ret; @@ -557,8 +570,8 @@ const HWContextType ff_hwcontext_type_dxva2 = { .frames_uninit= dxva2_frames_uninit, .frames_get_buffer= dxva2_get_buffer, .transfer_get_formats = dxva2_transfer_get_formats, -.transfer_data_to = dxva2_transfer_data, -.transfer_data_from = dxva2_transfer_data, +.transfer_data_to = dxva2_transfer_data_to, +.transfer_data_from = dxva2_transfer_data_from, .map_from = dxva2_map_from, .pix_fmts = (const enum AVPixelFormat[]){ AV_PIX_FMT_DXVA2_VLD, AV_PIX_FMT_NONE }, == ___ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog
[FFmpeg-cvslog] Merge commit 'e18ba2dfd2d19aedc8afccf011d5fd0833352423'
ffmpeg | branch: master | Hendrik Leppkes <h.lepp...@gmail.com> | Sat Apr 1 18:53:40 2017 +0200| [5c612c5ff8c4adf33ede42ad63183c41334ea2d2] | committer: Hendrik Leppkes Merge commit 'e18ba2dfd2d19aedc8afccf011d5fd0833352423' * commit 'e18ba2dfd2d19aedc8afccf011d5fd0833352423': hwcontext_dxva2: make sure the sw frame format is the right one during transfer Merged-by: Hendrik Leppkes <h.lepp...@gmail.com> > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=5c612c5ff8c4adf33ede42ad63183c41334ea2d2 --- libavutil/hwcontext_dxva2.c | 6 ++ 1 file changed, 6 insertions(+) diff --git a/libavutil/hwcontext_dxva2.c b/libavutil/hwcontext_dxva2.c index 89fedd2..4ed0d56 100644 --- a/libavutil/hwcontext_dxva2.c +++ b/libavutil/hwcontext_dxva2.c @@ -331,6 +331,9 @@ static int dxva2_transfer_data_to(AVHWFramesContext *ctx, AVFrame *dst, AVFrame *map; int ret; +if (src->format != ctx->sw_format) +return AVERROR(ENOSYS); + map = av_frame_alloc(); if (!map) return AVERROR(ENOMEM); @@ -355,6 +358,9 @@ static int dxva2_transfer_data_from(AVHWFramesContext *ctx, AVFrame *dst, ptrdiff_t src_linesize[4], dst_linesize[4]; int ret, i; +if (dst->format != ctx->sw_format) +return AVERROR(ENOSYS); + map = av_frame_alloc(); if (!map) return AVERROR(ENOMEM); == ___ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog
[FFmpeg-cvslog] Merge commit '9d7026574bbbe67d004a1c32911da75375692967'
ffmpeg | branch: master | Hendrik Leppkes <h.lepp...@gmail.com> | Sat Apr 1 18:53:32 2017 +0200| [fbfa72916c896e4008d73567f09510336e65cd99] | committer: Hendrik Leppkes Merge commit '9d7026574bbbe67d004a1c32911da75375692967' * commit '9d7026574bbbe67d004a1c32911da75375692967': hwcontext_dxva2: fix handling of the mapping flags Merged-by: Hendrik Leppkes <h.lepp...@gmail.com> > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=fbfa72916c896e4008d73567f09510336e65cd99 --- libavutil/hwcontext_dxva2.c | 12 +--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/libavutil/hwcontext_dxva2.c b/libavutil/hwcontext_dxva2.c index 5294106..c5d93d1 100644 --- a/libavutil/hwcontext_dxva2.c +++ b/libavutil/hwcontext_dxva2.c @@ -278,6 +278,7 @@ static int dxva2_map_frame(AVHWFramesContext *ctx, AVFrame *dst, const AVFrame * D3DLOCKED_RECT LockedRect; HRESULThr; int i, err, nb_planes; +int lock_flags = 0; nb_planes = av_pix_fmt_count_planes(dst->format); @@ -287,8 +288,12 @@ static int dxva2_map_frame(AVHWFramesContext *ctx, AVFrame *dst, const AVFrame * return AVERROR_UNKNOWN; } -hr = IDirect3DSurface9_LockRect(surface, , NULL, -flags & AV_HWFRAME_MAP_READ ? D3DLOCK_READONLY : D3DLOCK_DISCARD); +if (!(flags & AV_HWFRAME_MAP_WRITE)) +lock_flags |= D3DLOCK_READONLY; +if (flags & AV_HWFRAME_MAP_OVERWRITE) +lock_flags |= D3DLOCK_DISCARD; + +hr = IDirect3DSurface9_LockRect(surface, , NULL, lock_flags); if (FAILED(hr)) { av_log(ctx, AV_LOG_ERROR, "Unable to lock DXVA2 surface\n"); return AVERROR_UNKNOWN; @@ -334,7 +339,8 @@ static int dxva2_transfer_data(AVHWFramesContext *ctx, AVFrame *dst, map->format = dst->format; ret = dxva2_map_frame(ctx, map, download ? src : dst, - download ? AV_HWFRAME_MAP_READ : AV_HWFRAME_MAP_WRITE); + download ? AV_HWFRAME_MAP_READ : + AV_HWFRAME_MAP_WRITE | AV_HWFRAME_MAP_OVERWRITE); if (ret < 0) goto fail; == ___ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog
[FFmpeg-cvslog] Merge commit '0d3176e32f351d18d6174d8b05796829a75a4c6b'
ffmpeg | branch: master | Hendrik Leppkes <h.lepp...@gmail.com> | Sat Apr 1 18:53:27 2017 +0200| [d91e7aac122fef557afe9695ea2c9780ecc742ca] | committer: Hendrik Leppkes Merge commit '0d3176e32f351d18d6174d8b05796829a75a4c6b' * commit '0d3176e32f351d18d6174d8b05796829a75a4c6b': hwcontext_dxva2: do not assume the destination format during mapping is always the right one Merged-by: Hendrik Leppkes <h.lepp...@gmail.com> > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=d91e7aac122fef557afe9695ea2c9780ecc742ca --- libavutil/hwcontext_dxva2.c | 4 1 file changed, 4 insertions(+) diff --git a/libavutil/hwcontext_dxva2.c b/libavutil/hwcontext_dxva2.c index c5265b9..5294106 100644 --- a/libavutil/hwcontext_dxva2.c +++ b/libavutil/hwcontext_dxva2.c @@ -361,6 +361,10 @@ static int dxva2_map_from(AVHWFramesContext *ctx, { int err; +if (dst->format != AV_PIX_FMT_NONE && dst->format != ctx->sw_format) +return AVERROR(ENOSYS); +dst->format = ctx->sw_format; + err = dxva2_map_frame(ctx, dst, src, flags); if (err < 0) return err; == ___ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog
[FFmpeg-cvslog] Merge commit '910973765417f06a4a9ccbd006e4df74c32ecb01'
ffmpeg | branch: master | Hendrik Leppkes <h.lepp...@gmail.com> | Thu Mar 30 11:33:51 2017 +0200| [9ca5d2de5d14fb60a0b4d2eace73a34e7e33861f] | committer: Hendrik Leppkes Merge commit '910973765417f06a4a9ccbd006e4df74c32ecb01' * commit '910973765417f06a4a9ccbd006e4df74c32ecb01': hwcontext_dxva2: frame mapping support Merged-by: Hendrik Leppkes <h.lepp...@gmail.com> > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=9ca5d2de5d14fb60a0b4d2eace73a34e7e33861f --- libavutil/hwcontext_dxva2.c | 89 ++--- 1 file changed, 68 insertions(+), 21 deletions(-) diff --git a/libavutil/hwcontext_dxva2.c b/libavutil/hwcontext_dxva2.c index 8d03c5a..bc53d53 100644 --- a/libavutil/hwcontext_dxva2.c +++ b/libavutil/hwcontext_dxva2.c @@ -257,21 +257,22 @@ static int dxva2_transfer_get_formats(AVHWFramesContext *ctx, return 0; } -static int dxva2_transfer_data(AVHWFramesContext *ctx, AVFrame *dst, - const AVFrame *src) +static void dxva2_unmap_frame(AVHWFramesContext *ctx, HWMapDescriptor *hwmap) +{ +IDirect3DSurface9 *surface = (IDirect3DSurface9*)hwmap->source->data[3]; +IDirect3DSurface9_UnlockRect(surface); +} + +static int dxva2_map_frame(AVHWFramesContext *ctx, AVFrame *dst, const AVFrame *src, + int flags) { -IDirect3DSurface9 *surface; +IDirect3DSurface9 *surface = (IDirect3DSurface9*)src->data[3]; D3DSURFACE_DESCsurfaceDesc; D3DLOCKED_RECT LockedRect; HRESULThr; +int i, err, nb_planes; -uint8_t *surf_data[4] = { NULL }; -int surf_linesize[4] = { 0 }; -int i; - -int download = !!src->hw_frames_ctx; - -surface = (IDirect3DSurface9*)(download ? src->data[3] : dst->data[3]); +nb_planes = av_pix_fmt_count_planes(dst->format); hr = IDirect3DSurface9_GetDesc(surface, ); if (FAILED(hr)) { @@ -280,32 +281,77 @@ static int dxva2_transfer_data(AVHWFramesContext *ctx, AVFrame *dst, } hr = IDirect3DSurface9_LockRect(surface, , NULL, -download ? D3DLOCK_READONLY : D3DLOCK_DISCARD); +flags & AV_HWFRAME_MAP_READ ? D3DLOCK_READONLY : D3DLOCK_DISCARD); if (FAILED(hr)) { av_log(ctx, AV_LOG_ERROR, "Unable to lock DXVA2 surface\n"); return AVERROR_UNKNOWN; } -for (i = 0; download ? dst->data[i] : src->data[i]; i++) -surf_linesize[i] = LockedRect.Pitch; +err = ff_hwframe_map_create(src->hw_frames_ctx, dst, src, +dxva2_unmap_frame, NULL); +if (err < 0) +goto fail; + +for (i = 0; i < nb_planes; i++) +dst->linesize[i] = LockedRect.Pitch; + +av_image_fill_pointers(dst->data, dst->format, surfaceDesc.Height, + (uint8_t*)LockedRect.pBits, dst->linesize); -av_image_fill_pointers(surf_data, ctx->sw_format, surfaceDesc.Height, - (uint8_t*)LockedRect.pBits, surf_linesize); +return 0; +fail: +IDirect3DSurface9_UnlockRect(surface); +return err; +} + +static int dxva2_transfer_data(AVHWFramesContext *ctx, AVFrame *dst, + const AVFrame *src) +{ +int download = !!src->hw_frames_ctx; + +AVFrame *map; +int ret, i; + +map = av_frame_alloc(); +if (!map) +return AVERROR(ENOMEM); +map->format = dst->format; + +ret = dxva2_map_frame(ctx, map, download ? src : dst, + download ? AV_HWFRAME_MAP_READ : AV_HWFRAME_MAP_WRITE); +if (ret < 0) +goto fail; if (download) { -ptrdiff_t src_linesize1[4], dst_linesize1[4]; +ptrdiff_t src_linesize[4], dst_linesize[4]; for (i = 0; i < 4; i++) { -dst_linesize1[i] = dst->linesize[i]; -src_linesize1[i] = surf_linesize[i]; +dst_linesize[i] = dst->linesize[i]; +src_linesize[i] = map->linesize[i]; } -av_image_copy_uc_from(dst->data, dst_linesize1, surf_data, src_linesize1, +av_image_copy_uc_from(dst->data, dst_linesize, map->data, src_linesize, ctx->sw_format, src->width, src->height); } else { -av_image_copy(surf_data, surf_linesize, src->data, src->linesize, +av_image_copy(map->data, map->linesize, src->data, src->linesize, ctx->sw_format, src->width, src->height); } -IDirect3DSurface9_UnlockRect(surface); +fail: +av_frame_free(); +return ret; +} + +static int dxva2_map_from(AVHWFramesContext *ctx, + AVFrame *dst, const AVFrame *src, int flags) +{ +int err; + +err = dxva2_map_frame(ctx, dst, src, flags); +if (err < 0) +return err; + +err = a
[FFmpeg-cvslog] Merge commit '10065d9324c2e35ce7040b6a2b9ebf6079bcbf42'
ffmpeg | branch: master | Hendrik Leppkes <h.lepp...@gmail.com> | Thu Mar 30 11:37:39 2017 +0200| [14764b93e282f1c1a30d093da915df1b692db126] | committer: Hendrik Leppkes Merge commit '10065d9324c2e35ce7040b6a2b9ebf6079bcbf42' * commit '10065d9324c2e35ce7040b6a2b9ebf6079bcbf42': hwcontext_dxva2: add support for the P8 format Merged-by: Hendrik Leppkes <h.lepp...@gmail.com> > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=14764b93e282f1c1a30d093da915df1b692db126 --- libavutil/hwcontext_dxva2.c | 20 ++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/libavutil/hwcontext_dxva2.c b/libavutil/hwcontext_dxva2.c index bc53d53..c5265b9 100644 --- a/libavutil/hwcontext_dxva2.c +++ b/libavutil/hwcontext_dxva2.c @@ -56,6 +56,10 @@ static const D3DPRESENT_PARAMETERS dxva2_present_params = { .Flags= D3DPRESENTFLAG_VIDEO, }; +typedef struct DXVA2Mapping { +uint32_t palette_dummy[256]; +} DXVA2Mapping; + typedef struct DXVA2FramesContext { IDirect3DSurface9 **surfaces_internal; int nb_surfaces_used; @@ -82,6 +86,7 @@ static const struct { } supported_formats[] = { { MKTAG('N', 'V', '1', '2'), AV_PIX_FMT_NV12 }, { MKTAG('P', '0', '1', '0'), AV_PIX_FMT_P010 }, +{ D3DFMT_P8, AV_PIX_FMT_PAL8 }, }; DEFINE_GUID(video_decoder_service, 0xfc51a551, 0xd5e7, 0x11d9, 0xaf, 0x55, 0x00, 0x05, 0x4e, 0x43, 0xff, 0x02); @@ -261,12 +266,14 @@ static void dxva2_unmap_frame(AVHWFramesContext *ctx, HWMapDescriptor *hwmap) { IDirect3DSurface9 *surface = (IDirect3DSurface9*)hwmap->source->data[3]; IDirect3DSurface9_UnlockRect(surface); +av_freep(>priv); } static int dxva2_map_frame(AVHWFramesContext *ctx, AVFrame *dst, const AVFrame *src, int flags) { IDirect3DSurface9 *surface = (IDirect3DSurface9*)src->data[3]; +DXVA2Mapping *map; D3DSURFACE_DESCsurfaceDesc; D3DLOCKED_RECT LockedRect; HRESULThr; @@ -287,10 +294,16 @@ static int dxva2_map_frame(AVHWFramesContext *ctx, AVFrame *dst, const AVFrame * return AVERROR_UNKNOWN; } +map = av_mallocz(sizeof(*map)); +if (!map) +goto fail; + err = ff_hwframe_map_create(src->hw_frames_ctx, dst, src, -dxva2_unmap_frame, NULL); -if (err < 0) +dxva2_unmap_frame, map); +if (err < 0) { +av_freep(); goto fail; +} for (i = 0; i < nb_planes; i++) dst->linesize[i] = LockedRect.Pitch; @@ -298,6 +311,9 @@ static int dxva2_map_frame(AVHWFramesContext *ctx, AVFrame *dst, const AVFrame * av_image_fill_pointers(dst->data, dst->format, surfaceDesc.Height, (uint8_t*)LockedRect.pBits, dst->linesize); +if (dst->format == AV_PIX_FMT_PAL8) +dst->data[1] = (uint8_t*)map->palette_dummy; + return 0; fail: IDirect3DSurface9_UnlockRect(surface); == diff --cc libavutil/hwcontext_dxva2.c index bc53d53,600cf0e..c5265b9 --- a/libavutil/hwcontext_dxva2.c +++ b/libavutil/hwcontext_dxva2.c @@@ -37,25 -36,14 +37,29 @@@ #include "imgutils.h" #include "pixdesc.h" #include "pixfmt.h" +#include "compat/w32dlfcn.h" typedef IDirect3D9* WINAPI pDirect3DCreate9(UINT); +typedef HRESULT WINAPI pDirect3DCreate9Ex(UINT, IDirect3D9Ex **); typedef HRESULT WINAPI pCreateDeviceManager9(UINT *, IDirect3DDeviceManager9 **); +#define FF_D3DCREATE_FLAGS (D3DCREATE_SOFTWARE_VERTEXPROCESSING | \ +D3DCREATE_MULTITHREADED | \ +D3DCREATE_FPU_PRESERVE) + +static const D3DPRESENT_PARAMETERS dxva2_present_params = { +.Windowed = TRUE, +.BackBufferWidth = 640, +.BackBufferHeight = 480, +.BackBufferCount = 0, +.SwapEffect = D3DSWAPEFFECT_DISCARD, +.Flags= D3DPRESENTFLAG_VIDEO, +}; + + typedef struct DXVA2Mapping { + uint32_t palette_dummy[256]; + } DXVA2Mapping; + typedef struct DXVA2FramesContext { IDirect3DSurface9 **surfaces_internal; int nb_surfaces_used; ___ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog
[FFmpeg-cvslog] dxva2: fix surface selection when compiled with both d3d11va and dxva2
ffmpeg | branch: master | Hendrik Leppkes <h.lepp...@gmail.com> | Mon Nov 7 09:59:28 2016 +0100| [fabfbfe5710050812147f93a351a53fdda56ff8c] | committer: Anton Khirnov dxva2: fix surface selection when compiled with both d3d11va and dxva2 Fixes a regression introduced in be630b1e08ebe8f766b1798accd6b8e5e096f5aa Signed-off-by: Anton Khirnov <an...@khirnov.net> > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=fabfbfe5710050812147f93a351a53fdda56ff8c --- libavcodec/dxva2.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/libavcodec/dxva2.c b/libavcodec/dxva2.c index eeac474..9fedd03 100644 --- a/libavcodec/dxva2.c +++ b/libavcodec/dxva2.c @@ -41,7 +41,7 @@ unsigned ff_dxva2_get_surface_index(const AVCodecContext *avctx, void *surface = ff_dxva2_get_surface(frame); unsigned i; -for (i = 0; i < DXVA_CONTEXT_COUNT(avctx, ctx); i++) +for (i = 0; i < DXVA_CONTEXT_COUNT(avctx, ctx); i++) { #if CONFIG_D3D11VA if (avctx->pix_fmt == AV_PIX_FMT_D3D11VA_VLD && ctx->d3d11va.surface[i] == surface) { D3D11_VIDEO_DECODER_OUTPUT_VIEW_DESC viewDesc; @@ -53,6 +53,7 @@ unsigned ff_dxva2_get_surface_index(const AVCodecContext *avctx, if (avctx->pix_fmt == AV_PIX_FMT_DXVA2_VLD && ctx->dxva2.surface[i] == surface) return i; #endif +} assert(0); return 0; ___ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog
[FFmpeg-cvslog] x86/h264_weight: use appropriate register size for weight parameters
ffmpeg | branch: master | Hendrik Leppkes <h.lepp...@gmail.com> | Fri Sep 23 09:52:48 2016 +0200| [8d1267932ca9c2e343ef303349101bab6681d02e] | committer: Martin Storsjö x86/h264_weight: use appropriate register size for weight parameters This fixes decoding corruption on 64 bit windows. Signed-off-by: Martin Storsjö <mar...@martin.st> > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=8d1267932ca9c2e343ef303349101bab6681d02e --- libavcodec/x86/h264_weight.asm | 12 ++-- 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/libavcodec/x86/h264_weight.asm b/libavcodec/x86/h264_weight.asm index 9ad26de..e421ec8 100644 --- a/libavcodec/x86/h264_weight.asm +++ b/libavcodec/x86/h264_weight.asm @@ -134,16 +134,16 @@ WEIGHT_FUNC_HALF_MM 8, 8 mov off_regd, r7m add off_regd, 1 or off_regd, 1 -addr4, 1 -cmpr6d, 128 +add r4d, 1 +cmp r6d, 128 je .nonnormal -cmpr5, 128 +cmp r5d, 128 jne .normal .nonnormal -sarr5, 1 -sarr6, 1 +sar r5d, 1 +sar r6d, 1 sar off_regd, 1 -subr4, 1 +sub r4d, 1 .normal %if cpuflag(ssse3) movd m4, r5d ___ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog
[FFmpeg-cvslog] avformat/hlsenc: don't use %s for strftime on msvc
ffmpeg | branch: master | Hendrik Leppkes <h.lepp...@gmail.com> | Sat Feb 25 11:23:50 2017 +0800| [3aef2fceff3205605aed19f8a81b56db56496631] | committer: Steven Liu avformat/hlsenc: don't use %s for strftime on msvc MSVC doesn't support the %s time format, and instead of returning an error the invalid parameter handler is invoked which (by default) terminates the process. Reviewed-by:Steven Liu <l...@chinaffmpeg.org> Signed-off-by: Hendrik Leppkes <h.lepp...@gmail.com> > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=3aef2fceff3205605aed19f8a81b56db56496631 --- libavformat/hlsenc.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/libavformat/hlsenc.c b/libavformat/hlsenc.c index 0238705..9cf6211 100644 --- a/libavformat/hlsenc.c +++ b/libavformat/hlsenc.c @@ -1027,7 +1027,8 @@ static const char * get_default_pattern_localtime_fmt(void) struct tm *p, tmbuf; p = localtime_r(, ); // no %s support when strftime returned error or left format string unchanged -return (!strftime(b, sizeof(b), "%s", p) || !strcmp(b, "%s")) ? "-%Y%m%d%H%M%S.ts" : "-%s.ts"; +// also no %s support on MSVC, which invokes the invalid parameter handler on unsupported format strings, instead of returning an error +return (HAVE_LIBC_MSVCRT || !strftime(b, sizeof(b), "%s", p) || !strcmp(b, "%s")) ? "-%Y%m%d%H%M%S.ts" : "-%s.ts"; } static int hls_write_header(AVFormatContext *s) ___ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog
[FFmpeg-cvslog] configure: use dashes instead of slashes in lib.exe invocation
ffmpeg | branch: master | Hendrik Leppkes <h.lepp...@gmail.com> | Mon Feb 6 19:45:54 2017 +0100| [a6cee50fa206466f7a5fe8a46f87561a403ff52f] | committer: Hendrik Leppkes configure: use dashes instead of slashes in lib.exe invocation This avoids issues with wrong parameter translation by msys on some systems, and the Windows SDK tools accept both forms equally. > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=a6cee50fa206466f7a5fe8a46f87561a403ff52f --- configure | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/configure b/configure index 231cc3e..2755576 100755 --- a/configure +++ b/configure @@ -4804,7 +4804,7 @@ case $target_os in SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(FULLNAME)-$(LIBMAJOR)$(SLIBSUF)' dlltool="${cross_prefix}dlltool" if check_cmd lib.exe -list; then -SLIB_EXTRA_CMD=-'sed -e "s/ @[^ ]*//" $$(@:$(SLIBSUF)=.orig.def) > $$(@:$(SLIBSUF)=.def); lib.exe /nologo /machine:$(LIBTARGET) /def:$$(@:$(SLIBSUF)=.def) /out:$(SUBDIR)$(SLIBNAME:$(SLIBSUF)=.lib)' +SLIB_EXTRA_CMD=-'sed -e "s/ @[^ ]*//" $$(@:$(SLIBSUF)=.orig.def) > $$(@:$(SLIBSUF)=.def); lib.exe -nologo -machine:$(LIBTARGET) -def:$$(@:$(SLIBSUF)=.def) -out:$(SUBDIR)$(SLIBNAME:$(SLIBSUF)=.lib)' if enabled x86_64; then LIBTARGET=x64 fi ___ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog
[FFmpeg-cvslog] configure: add nologo switch to invocation of lib.exe
ffmpeg | branch: master | Hendrik Leppkes <h.lepp...@gmail.com> | Fri Feb 3 09:36:55 2017 +0100| [647af1a0dd2e1ea880790df0c3047cb44c3cd53b] | committer: Hendrik Leppkes configure: add nologo switch to invocation of lib.exe This suppresses the startup banner, which is consistent with all other calls to the Windows SDK binaries. > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=647af1a0dd2e1ea880790df0c3047cb44c3cd53b --- configure | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/configure b/configure index b22c8b3..d3d652f 100755 --- a/configure +++ b/configure @@ -4804,7 +4804,7 @@ case $target_os in SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(FULLNAME)-$(LIBMAJOR)$(SLIBSUF)' dlltool="${cross_prefix}dlltool" if check_cmd lib.exe -list; then -SLIB_EXTRA_CMD=-'sed -e "s/ @[^ ]*//" $$(@:$(SLIBSUF)=.orig.def) > $$(@:$(SLIBSUF)=.def); lib.exe /machine:$(LIBTARGET) /def:$$(@:$(SLIBSUF)=.def) /out:$(SUBDIR)$(SLIBNAME:$(SLIBSUF)=.lib)' +SLIB_EXTRA_CMD=-'sed -e "s/ @[^ ]*//" $$(@:$(SLIBSUF)=.orig.def) > $$(@:$(SLIBSUF)=.def); lib.exe /nologo /machine:$(LIBTARGET) /def:$$(@:$(SLIBSUF)=.def) /out:$(SUBDIR)$(SLIBNAME:$(SLIBSUF)=.lib)' if enabled x86_64; then LIBTARGET=x64 fi ___ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog
[FFmpeg-cvslog] configure: instruct MSVC 2015 to properly process UTF-8 string literals
ffmpeg | branch: master | Hendrik Leppkes <h.lepp...@gmail.com> | Fri Feb 3 09:37:53 2017 +0100| [8b80feb9a70bca07e6ea2e1a0b870915e88f13f7] | committer: Hendrik Leppkes configure: instruct MSVC 2015 to properly process UTF-8 string literals Without the /UTF-8 switch, the MSVC compiler treats all files as in the system codepage, instead of in UTF-8, which causes UTF-8 string literals to be interpreted wrong. This switch was only introduced in VS2015 Update 2, and any earlier versions do not have an equivalent solution. Fixes fate-sub-scc on MSVC 2015+ > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=8b80feb9a70bca07e6ea2e1a0b870915e88f13f7 --- configure | 3 +++ 1 file changed, 3 insertions(+) diff --git a/configure b/configure index d3d652f..231cc3e 100755 --- a/configure +++ b/configure @@ -6327,6 +6327,9 @@ EOF # Issue has been fixed in MSVC v19.00.24218. check_cpp_condition windows.h "_MSC_FULL_VER >= 190024218" || check_cflags -d2SSAOptimizer- +# enable utf-8 source processing on VS2015 U2 and newer +check_cpp_condition windows.h "_MSC_FULL_VER >= 190023918" && +add_cflags -utf-8 fi for pfx in "" host_; do ___ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog
[FFmpeg-cvslog] riff: don't overwrite bps from WAVEFORMATEX if EXTENSIBLE doesn' t contain that data.
ffmpeg | branch: master | Hendrik Leppkes <h.lepp...@gmail.com> | Wed May 2 16:34:45 2012 +0200| [7f549b8338ed3775fec4bf10421ff5744e5866dd] | committer: Anton Khirnov riff: don't overwrite bps from WAVEFORMATEX if EXTENSIBLE doesn't contain that data. According to the specification on the MSDN [1], 0 is valid for that particular field, and it should be ignored in that case. [1]: http://msdn.microsoft.com/en-us/library/windows/desktop/dd757714(v=vs.85).aspx Bug-Id: 950 Signed-off-by: Anton Khirnov <an...@khirnov.net> > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=7f549b8338ed3775fec4bf10421ff5744e5866dd --- libavformat/riffdec.c | 6 +- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/libavformat/riffdec.c b/libavformat/riffdec.c index 531413c..8124835 100644 --- a/libavformat/riffdec.c +++ b/libavformat/riffdec.c @@ -57,7 +57,11 @@ enum AVCodecID ff_codec_guid_get_id(const AVCodecGuid *guids, ff_asf_guid guid) static void parse_waveformatex(AVIOContext *pb, AVCodecParameters *par) { ff_asf_guid subformat; -par->bits_per_coded_sample = avio_rl16(pb); +int bps; + +bps = avio_rl16(pb); +if (bps) +par->bits_per_coded_sample = bps; par->channel_layout= avio_rl32(pb); /* dwChannelMask */ ff_get_guid(pb, ); ___ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog
[FFmpeg-cvslog] avconv_dxva2: add a profile check for hevc
ffmpeg | branch: master | Hendrik Leppkes <h.lepp...@gmail.com> | Sat Jan 30 17:11:13 2016 +0100| [da917fcf5183ed249ad1285b8edd330f421376c4] | committer: Anton Khirnov avconv_dxva2: add a profile check for hevc Signed-off-by: Anton Khirnov <an...@khirnov.net> > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=da917fcf5183ed249ad1285b8edd330f421376c4 --- avconv_dxva2.c | 6 ++ 1 file changed, 6 insertions(+) diff --git a/avconv_dxva2.c b/avconv_dxva2.c index 9cf09cd..7578c3f 100644 --- a/avconv_dxva2.c +++ b/avconv_dxva2.c @@ -422,6 +422,12 @@ int dxva2_init(AVCodecContext *s) return AVERROR(EINVAL); } +if (s->codec_id == AV_CODEC_ID_HEVC && +s->profile != FF_PROFILE_HEVC_MAIN && s->profile != FF_PROFILE_HEVC_MAIN_10) { +av_log(NULL, loglevel, "Unsupported HEVC profile for DXVA2 HWAccel: %d\n", s->profile); +return AVERROR(EINVAL); +} + av_buffer_unref(>hw_frames_ctx); ret = dxva2_create_decoder(s); ___ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog
[FFmpeg-cvslog] hevc: set profile based on the profile compatibility flags if needed
ffmpeg | branch: master | Hendrik Leppkes <h.lepp...@gmail.com> | Sat Jan 30 17:44:34 2016 +0100| [1ecb63cd1c1a4ddc5efed4abbc3158b969d8c5e4] | committer: Anton Khirnov hevc: set profile based on the profile compatibility flags if needed This fixes retrieving a valid profile for many of the FATE conformance samples, allowing them to be properly decoded by the HWAccel after adding a profile check. Signed-off-by: Anton Khirnov <an...@khirnov.net> > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=1ecb63cd1c1a4ddc5efed4abbc3158b969d8c5e4 --- libavcodec/hevc_ps.c | 6 +- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/libavcodec/hevc_ps.c b/libavcodec/hevc_ps.c index 583fa06..5c249d8 100644 --- a/libavcodec/hevc_ps.c +++ b/libavcodec/hevc_ps.c @@ -244,8 +244,12 @@ static void decode_profile_tier_level(GetBitContext *gb, AVCodecContext *avctx, else av_log(avctx, AV_LOG_WARNING, "Unknown HEVC profile: %d\n", ptl->profile_idc); -for (i = 0; i < 32; i++) +for (i = 0; i < 32; i++) { ptl->profile_compatibility_flag[i] = get_bits1(gb); + +if (ptl->profile_idc == 0 && i > 0 && ptl->profile_compatibility_flag[i]) +ptl->profile_idc = i; +} ptl->progressive_source_flag= get_bits1(gb); ptl->interlaced_source_flag = get_bits1(gb); ptl->non_packed_constraint_flag = get_bits1(gb); ___ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog
[FFmpeg-cvslog] avconv_dxva2: support HEVC Main10 decoding
ffmpeg | branch: master | Hendrik Leppkes <h.lepp...@gmail.com> | Tue Jun 28 19:20:40 2016 +0200| [a8fce24b9c5a87187f5bd864b18f5b3e575f8c3d] | committer: Anton Khirnov avconv_dxva2: support HEVC Main10 decoding Signed-off-by: Anton Khirnov <an...@khirnov.net> > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=a8fce24b9c5a87187f5bd864b18f5b3e575f8c3d --- avconv_dxva2.c | 9 +++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/avconv_dxva2.c b/avconv_dxva2.c index 186b024..9cf09cd 100644 --- a/avconv_dxva2.c +++ b/avconv_dxva2.c @@ -56,6 +56,7 @@ DEFINE_GUID(DXVADDI_Intel_ModeH264_E, 0x604F8E68, 0x4951,0x4C54,0x88,0xFE,0xAB,0 DEFINE_GUID(DXVA2_ModeVC1_D, 0x1b81beA3, 0xa0c7,0x11d3,0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5); DEFINE_GUID(DXVA2_ModeVC1_D2010, 0x1b81beA4, 0xa0c7,0x11d3,0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5); DEFINE_GUID(DXVA2_ModeHEVC_VLD_Main, 0x5b11d51b, 0x2f4c,0x4452,0xbc,0xc3,0x09,0xf2,0xa1,0x16,0x0c,0xc0); +DEFINE_GUID(DXVA2_ModeHEVC_VLD_Main10,0x107af0e0, 0xef1a,0x4d19,0xab,0xa8,0x67,0xa1,0x63,0x07,0x3d,0x13); DEFINE_GUID(DXVA2_NoEncrypt, 0x1b81beD0, 0xa0c7,0x11d3,0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5); DEFINE_GUID(GUID_NULL,0x, 0x,0x,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00); @@ -83,6 +84,7 @@ static const dxva2_mode dxva2_modes[] = { /* HEVC/H.265 */ { _ModeHEVC_VLD_Main, AV_CODEC_ID_HEVC }, +{ _ModeHEVC_VLD_Main10, AV_CODEC_ID_HEVC }, { NULL, 0 }, }; @@ -265,6 +267,8 @@ static int dxva2_create_decoder(AVCodecContext *s) GUID *guid_list = NULL; unsigned guid_count = 0, i, j; GUID device_guid = GUID_NULL; +const D3DFORMAT surface_format = s->sw_pix_fmt == AV_PIX_FMT_YUV420P10 ? + MKTAG('P', '0', '1', '0') : MKTAG('N', 'V', '1', '2'); D3DFORMAT target_format = 0; DXVA2_VideoDesc desc = { 0 }; DXVA2_ConfigPictureDecode config; @@ -301,7 +305,7 @@ static int dxva2_create_decoder(AVCodecContext *s) } for (j = 0; j < target_count; j++) { const D3DFORMAT format = target_list[j]; -if (format == MKTAG('N','V','1','2')) { +if (format == surface_format) { target_format = format; break; } @@ -359,7 +363,8 @@ static int dxva2_create_decoder(AVCodecContext *s) frames_hwctx = frames_ctx->hwctx; frames_ctx->format= AV_PIX_FMT_DXVA2_VLD; -frames_ctx->sw_format = AV_PIX_FMT_NV12; +frames_ctx->sw_format = s->sw_pix_fmt == AV_PIX_FMT_YUV420P10 ? +AV_PIX_FMT_P010 : AV_PIX_FMT_NV12; frames_ctx->width = FFALIGN(s->coded_width, surface_alignment); frames_ctx->height= FFALIGN(s->coded_height, surface_alignment); frames_ctx->initial_pool_size = num_surfaces; ___ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog
[FFmpeg-cvslog] dxva2_vc1: support multiple slices
ffmpeg | branch: master | Hendrik Leppkes <h.lepp...@gmail.com> | Tue Nov 15 10:28:54 2016 +0100| [99ee8ee0930be9c68e4e1202ddf4e8493794e0b2] | committer: Hendrik Leppkes dxva2_vc1: support multiple slices > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=99ee8ee0930be9c68e4e1202ddf4e8493794e0b2 --- libavcodec/dxva2_vc1.c | 106 + 1 file changed, 72 insertions(+), 34 deletions(-) diff --git a/libavcodec/dxva2_vc1.c b/libavcodec/dxva2_vc1.c index 7cbbc7e..36bf1ba 100644 --- a/libavcodec/dxva2_vc1.c +++ b/libavcodec/dxva2_vc1.c @@ -29,9 +29,11 @@ // potentially newer version. #include "dxva2_internal.h" +#define MAX_SLICES 1024 struct dxva2_picture_context { DXVA_PictureParameters pp; -DXVA_SliceInfo si; +unsigned slice_count; +DXVA_SliceInfo slice[MAX_SLICES]; const uint8_t *bitstream; unsigned bitstream_size; @@ -174,7 +176,8 @@ static void fill_slice(AVCodecContext *avctx, DXVA_SliceInfo *slice, slice->bStartCodeBitOffset = 0; slice->bReservedBits = (s->pict_type == AV_PICTURE_TYPE_B && !v->bi_type) ? v->bfraction_lut_index + 9 : 0; slice->wMBbitOffset= v->p_frame_skipped ? 0x : get_bits_count(>gb) + (avctx->codec_id == AV_CODEC_ID_VC1 ? 32 : 0); -slice->wNumberMBsInSlice = s->mb_width * s->mb_height; /* XXX We assume 1 slice */ +/* XXX We store the index of the first MB and it will be fixed later */ +slice->wNumberMBsInSlice = (s->mb_y >> v->field_mode) * s->mb_width + s->mb_x; slice->wQuantizerScaleCode = v->pq; slice->wBadSliceChopping = 0; } @@ -188,18 +191,15 @@ static int commit_bitstream_and_slice_buffer(AVCodecContext *avctx, const MpegEncContext *s = >s; struct dxva2_picture_context *ctx_pic = s->current_picture_ptr->hwaccel_picture_private; -DXVA_SliceInfo *slice = _pic->si; - static const uint8_t start_code[] = { 0, 0, 1, 0x0d }; const unsigned start_code_size = avctx->codec_id == AV_CODEC_ID_VC1 ? sizeof(start_code) : 0; -const unsigned slice_size = slice->dwSliceBitsInBuffer / 8; -const unsigned padding = 128 - ((start_code_size + slice_size) & 127); -const unsigned data_size = start_code_size + slice_size + padding; - +const unsigned mb_count = s->mb_width * (s->mb_height >> v->field_mode); +DXVA_SliceInfo *slice = NULL; void *dxva_data_ptr; -uint8_t *dxva_data; +uint8_t *dxva_data, *current, *end; unsigned dxva_size; -int result; +unsigned padding; +unsigned i; unsigned type; #if CONFIG_D3D11VA @@ -223,19 +223,49 @@ static int commit_bitstream_and_slice_buffer(AVCodecContext *avctx, #endif dxva_data = dxva_data_ptr; -result = data_size <= dxva_size ? 0 : -1; -if (!result) { -if (start_code_size > 0) { -memcpy(dxva_data, start_code, start_code_size); -if (v->second_field) -dxva_data[3] = 0x0c; +current = dxva_data; +end = dxva_data + dxva_size; + +for (i = 0; i < ctx_pic->slice_count; i++) { +unsigned position, size; +slice= _pic->slice[i]; +position = slice->dwSliceDataLocation; +size = slice->dwSliceBitsInBuffer / 8; +if (start_code_size + size > end - current) { +av_log(avctx, AV_LOG_ERROR, "Failed to build bitstream"); +break; } -memcpy(dxva_data + start_code_size, - ctx_pic->bitstream + slice->dwSliceDataLocation, slice_size); -if (padding > 0) -memset(dxva_data + start_code_size + slice_size, 0, padding); -slice->dwSliceBitsInBuffer = 8 * data_size; +slice->dwSliceDataLocation = current - dxva_data; + +if (i < ctx_pic->slice_count - 1) +slice->wNumberMBsInSlice = +slice[1].wNumberMBsInSlice - slice[0].wNumberMBsInSlice; +else +slice->wNumberMBsInSlice = +mb_count - slice[0].wNumberMBsInSlice; + +/* write the appropriate frame, field or slice start code */ +if (start_code_size) { +memcpy(current, start_code, start_code_size); +if (i == 0 && v->second_field) +current[3] = 0x0c; +else if (i > 0) +current[3] = 0x0b; + +current += start_code_size; +slice->dwSliceBitsInBuffer += start_code_size * 8; +} + +memcpy(current, _pic->bitstream[position], size); +current += size; } +padding = FFMIN(128 - ((current - dxva_data) & 127), end - current); +if (slice && padding > 0) { +memset(current, 0, padding); +current += padding;
[FFmpeg-cvslog] vc1dec: support multiple slices in frame coded images with hwaccel
ffmpeg | branch: master | Hendrik Leppkes <h.lepp...@gmail.com> | Tue Nov 15 10:28:10 2016 +0100| [36e27c87e7f06cac372f0a704ca3b91c3178a1ee] | committer: Hendrik Leppkes vc1dec: support multiple slices in frame coded images with hwaccel Based on a patch by Jun Zhao <mypopy...@gmail.com> > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=36e27c87e7f06cac372f0a704ca3b91c3178a1ee --- Changelog| 1 + libavcodec/vc1dec.c | 41 +++-- libavcodec/version.h | 2 +- 3 files changed, 41 insertions(+), 3 deletions(-) diff --git a/Changelog b/Changelog index 8456022..2778304 100644 --- a/Changelog +++ b/Changelog @@ -43,6 +43,7 @@ version 3.2: - Matroska muxer now writes CRC32 elements by default in all Level 1 elements - sidedata video and asidedata audio filter - Changed mapping of rtp MIME type G726 to codec g726le. +- spec compliant VAAPI/DXVA2 VC-1 decoding of slices in frame-coded images version 3.1: diff --git a/libavcodec/vc1dec.c b/libavcodec/vc1dec.c index 4f78aa8..75d3365 100644 --- a/libavcodec/vc1dec.c +++ b/libavcodec/vc1dec.c @@ -634,6 +634,8 @@ static int vc1_decode_frame(AVCodecContext *avctx, void *data, uint8_t *buf; GetBitContext gb; int mby_start; +const uint8_t *rawbuf; +int raw_size; } *slices = NULL, *tmp; v->second_field = 0; @@ -716,6 +718,8 @@ static int vc1_decode_frame(AVCodecContext *avctx, void *data, /* assuming that the field marker is at the exact middle, hope it's correct */ slices[n_slices].mby_start = s->mb_height + 1 >> 1; +slices[n_slices].rawbuf = start; +slices[n_slices].raw_size = size + 4; n_slices1 = n_slices - 1; // index of the last slice of the first field n_slices++; break; @@ -743,6 +747,8 @@ static int vc1_decode_frame(AVCodecContext *avctx, void *data, init_get_bits([n_slices].gb, slices[n_slices].buf, buf_size3 << 3); slices[n_slices].mby_start = get_bits([n_slices].gb, 9); +slices[n_slices].rawbuf = start; +slices[n_slices].raw_size = size + 4; n_slices++; break; } @@ -779,6 +785,8 @@ static int vc1_decode_frame(AVCodecContext *avctx, void *data, init_get_bits([n_slices].gb, slices[n_slices].buf, buf_size3 << 3); slices[n_slices].mby_start = s->mb_height + 1 >> 1; +slices[n_slices].rawbuf = divider; +slices[n_slices].raw_size = buf + buf_size - divider; n_slices1 = n_slices - 1; n_slices++; } @@ -921,6 +929,7 @@ static int vc1_decode_frame(AVCodecContext *avctx, void *data, } else #endif if (avctx->hwaccel) { +s->mb_y = 0; if (v->field_mode && buf_start_second_field) { // decode first field s->picture_structure = PICT_BOTTOM_FIELD - v->tff; @@ -953,8 +962,36 @@ static int vc1_decode_frame(AVCodecContext *avctx, void *data, s->picture_structure = PICT_FRAME; if ((ret = avctx->hwaccel->start_frame(avctx, buf_start, (buf + buf_size) - buf_start)) < 0) goto err; -if ((ret = avctx->hwaccel->decode_slice(avctx, buf_start, (buf + buf_size) - buf_start)) < 0) -goto err; + +if (n_slices == 0) { +// no slices, decode the frame as-is +if ((ret = avctx->hwaccel->decode_slice(avctx, buf_start, (buf + buf_size) - buf_start)) < 0) +goto err; +} else { +// decode the frame part as the first slice +if ((ret = avctx->hwaccel->decode_slice(avctx, buf_start, slices[0].rawbuf - buf_start)) < 0) +goto err; + +// and process the slices as additional slices afterwards +for (i = 0 ; i < n_slices; i++) { +s->gb = slices[i].gb; +s->mb_y = slices[i].mby_start; + +v->pic_header_flag = get_bits1(>gb); +if (v->pic_header_flag) { +if (ff_vc1_parse_frame_header_adv(v, >gb) < 0) { +av_log(v->s.avctx, AV_LOG_ERROR, "Slice header damaged\n"); +ret = AVERROR_INVALIDDATA; +if (avctx->err_recognition & AV_EF_EXPLODE) +goto err; +continue; +} +
[FFmpeg-cvslog] Merge commit '8d07e941b04d63fc4443dd986e3dc7b69cdcca43'
ffmpeg | branch: master | Hendrik Leppkes <h.lepp...@gmail.com> | Fri Nov 18 11:32:10 2016 +0100| [127cc6dd3d0b8ce8875aecacc5c2aaf45bf52243] | committer: Hendrik Leppkes Merge commit '8d07e941b04d63fc4443dd986e3dc7b69cdcca43' * commit '8d07e941b04d63fc4443dd986e3dc7b69cdcca43': FATE: add a test of H.264 SEI recovery in an intra refresh stream Our H264 decoder drops 3 frames from the beginning of the stream, but all frames after those match, hence the difference in the fate test. Merged-by: Hendrik Leppkes <h.lepp...@gmail.com> > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=127cc6dd3d0b8ce8875aecacc5c2aaf45bf52243 --- tests/fate/h264.mak| 2 ++ tests/ref/fate/h264-intra-refresh-recovery | 15 +++ 2 files changed, 17 insertions(+) diff --git a/tests/fate/h264.mak b/tests/fate/h264.mak index c366d86..718a3a8 100644 --- a/tests/fate/h264.mak +++ b/tests/fate/h264.mak @@ -191,6 +191,7 @@ FATE_H264_REINIT_TESTS := large_420_8-to-small_420_8 \ FATE_H264 := $(FATE_H264:%=fate-h264-conformance-%)\ $(FATE_H264_REINIT_TESTS:%=fate-h264-reinit-%)\ fate-h264-extreme-plane-pred \ + fate-h264-intra-refresh-recovery \ fate-h264-lossless\ fate-h264-3386\ @@ -425,6 +426,7 @@ fate-h264-xavc-4389: CMD = framecrc -i $(TARGET_SAM fate-h264-attachment-631: CMD = framecrc -i $(TARGET_SAMPLES)/h264/attachment631-small.mp4 -an -max_error_rate 0.95 fate-h264-skip-nokey: CMD = framecrc -skip_frame nokey -i $(TARGET_SAMPLES)/h264/h264_intra_first-small.ts fate-h264-skip-nointra: CMD = framecrc -skip_frame nointra -i $(TARGET_SAMPLES)/h264/h264_intra_first-small.ts +fate-h264-intra-refresh-recovery: CMD = framecrc -i $(TARGET_SAMPLES)/h264/intra_refresh.h264 -frames:v 10 fate-h264-invalid-ref-mod:CMD = framecrc -i $(TARGET_SAMPLES)/h264/h264refframeregression.mp4 -an -frames 10 -pix_fmt yuv420p10le fate-h264-lossless: CMD = framecrc -i $(TARGET_SAMPLES)/h264/lossless.h264 fate-h264-mixed-nal-coding: CMD = framecrc -i $(TARGET_SAMPLES)/h264/mixed-nal-coding.mp4 diff --git a/tests/ref/fate/h264-intra-refresh-recovery b/tests/ref/fate/h264-intra-refresh-recovery new file mode 100644 index 000..e85fe7b --- /dev/null +++ b/tests/ref/fate/h264-intra-refresh-recovery @@ -0,0 +1,15 @@ +#tb 0: 1/25 +#media_type 0: video +#codec_id 0: rawvideo +#dimensions 0: 320x240 +#sar 0: 0/1 +0, 57, 57,1, 115200, 0x4a17d50b +0, 58, 58,1, 115200, 0x1283d05b +0, 59, 59,1, 115200, 0x2747c650 +0, 60, 60,1, 115200, 0xba23c933 +0, 61, 61,1, 115200, 0x8a96c54b +0, 62, 62,1, 115200, 0x748ac6d3 +0, 63, 63,1, 115200, 0x719ca491 +0, 64, 64,1, 115200, 0x3d259d4d +0, 65, 65,1, 115200, 0xe3599aa8 +0, 66, 66,1, 115200, 0x6fd4affe == diff --cc tests/fate/h264.mak index c366d86,9996f95..718a3a8 --- a/tests/fate/h264.mak +++ b/tests/fate/h264.mak @@@ -191,8 -180,8 +191,9 @@@ FATE_H264_REINIT_TESTS := large_420_8-t FATE_H264 := $(FATE_H264:%=fate-h264-conformance-%)\ $(FATE_H264_REINIT_TESTS:%=fate-h264-reinit-%)\ fate-h264-extreme-plane-pred \ + fate-h264-intra-refresh-recovery \ fate-h264-lossless\ + fate-h264-3386\ FATE_H264-$(call DEMDEC, H264, H264) += $(FATE_H264) FATE_H264-$(call DEMDEC, MOV, H264) += fate-h264-crop-to-container @@@ -245,186 -221,169 +246,187 @@@ fate-h264-conformance-caba2_sva_b fate-h264-conformance-caba3_sony_c: CMD = framecrc -i $(TARGET_SAMPLES)/h264-conformance/CABA3_Sony_C.jsv fate-h264-conformance-caba3_sva_b:CMD = framecrc -i $(TARGET_SAMPLES)/h264-conformance/CABA3_SVA_B.264 fate-h264-conformance-caba3_toshiba_e:CMD = framecrc -i $(TARGET_SAMPLES)/h264-conformance/CABA3_TOSHIBA_E.264 -fate-h264-conformance-cabac_mot_fld0_full:CMD = framecrc -i $(TARGET_SAMPLES)/h264-conformance/camp_mot_fld0_full.26l -fate-h264-conformance-cabac_mot_frm0_full:CMD = framecrc -i $(TARGET_SAMPLES)/h264-conformance/camp_mot_frm0_full.26l -fate-h
[FFmpeg-cvslog] Merge commit 'd60c2d5216930ef98c7d4d6837d6229b37e0dcb3'
ffmpeg | branch: master | Hendrik Leppkes <h.lepp...@gmail.com> | Fri Nov 18 10:48:04 2016 +0100| [f4c3aa7ade13cd3e52366ffc8801a55588027aeb] | committer: Hendrik Leppkes Merge commit 'd60c2d5216930ef98c7d4d6837d6229b37e0dcb3' * commit 'd60c2d5216930ef98c7d4d6837d6229b37e0dcb3': mp3dec: read the initial/trailing padding from the LAME tag Noop, we have our own implementation for mp3 gapless tags. Merged-by: Hendrik Leppkes <h.lepp...@gmail.com> > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=f4c3aa7ade13cd3e52366ffc8801a55588027aeb --- ___ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog
[FFmpeg-cvslog] Merge commit '46278ec90ac5ad1dab5e85991f176afe49003fee'
ffmpeg | branch: master | Hendrik Leppkes <h.lepp...@gmail.com> | Fri Nov 18 10:48:40 2016 +0100| [5e78126bbdd58ae4dd97e2b604cbbec336f8bc32] | committer: Hendrik Leppkes Merge commit '46278ec90ac5ad1dab5e85991f176afe49003fee' * commit '46278ec90ac5ad1dab5e85991f176afe49003fee': mp3enc: write trailing padding Noop, we have our own implementation for mp3 gapless. Merged-by: Hendrik Leppkes <h.lepp...@gmail.com> > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=5e78126bbdd58ae4dd97e2b604cbbec336f8bc32 --- ___ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog
[FFmpeg-cvslog] Merge commit '7a76371437f9562c3414f985523f883489e3936a'
ffmpeg | branch: master | Hendrik Leppkes <h.lepp...@gmail.com> | Fri Nov 18 10:47:08 2016 +0100| [07502e473f0c28fdb781954d5ca1aca5f039179a] | committer: Hendrik Leppkes Merge commit '7a76371437f9562c3414f985523f883489e3936a' * commit '7a76371437f9562c3414f985523f883489e3936a': libopenh264enc: Simplify init by setting FF_CODEC_CAP_INIT_CLEANUP Merged-by: Hendrik Leppkes <h.lepp...@gmail.com> > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=07502e473f0c28fdb781954d5ca1aca5f039179a --- libavcodec/libopenh264enc.c | 27 --- 1 file changed, 8 insertions(+), 19 deletions(-) diff --git a/libavcodec/libopenh264enc.c b/libavcodec/libopenh264enc.c index 91f26d0..648f59b 100644 --- a/libavcodec/libopenh264enc.c +++ b/libavcodec/libopenh264enc.c @@ -100,8 +100,6 @@ static av_cold int svc_encode_init(AVCodecContext *avctx) if ((err = ff_libopenh264_check_version(avctx)) < 0) return err; -// Use a default error for multiple error paths below -err = AVERROR_UNKNOWN; if (WelsCreateSVCEncoder(>encoder)) { av_log(avctx, AV_LOG_ERROR, "Unable to create encoder\n"); @@ -167,8 +165,7 @@ FF_ENABLE_DEPRECATION_WARNINGS av_log(avctx, AV_LOG_ERROR, "Invalid combination -slices %d and -max_nal_size %d.\n", avctx->slices, s->max_nal_size); -err = AVERROR(EINVAL); -goto fail; +return AVERROR(EINVAL); } if (avctx->slices > 1) @@ -196,14 +193,13 @@ FF_ENABLE_DEPRECATION_WARNINGS } else { av_log(avctx, AV_LOG_ERROR, "Invalid -max_nal_size, " "specify a valid max_nal_size to use -slice_mode dyn\n"); -err = AVERROR(EINVAL); -goto fail; +return AVERROR(EINVAL); } } if ((*s->encoder)->InitializeExt(s->encoder, ) != cmResultSuccess) { av_log(avctx, AV_LOG_ERROR, "Initialize failed\n"); -goto fail; +return AVERROR_UNKNOWN; } if (avctx->flags & AV_CODEC_FLAG_GLOBAL_HEADER) { @@ -213,27 +209,19 @@ FF_ENABLE_DEPRECATION_WARNINGS for (i = 0; i < fbi.sLayerInfo[0].iNalCount; i++) size += fbi.sLayerInfo[0].pNalLengthInByte[i]; avctx->extradata = av_mallocz(size + AV_INPUT_BUFFER_PADDING_SIZE); -if (!avctx->extradata) { -err = AVERROR(ENOMEM); -goto fail; -} +if (!avctx->extradata) +return AVERROR(ENOMEM); avctx->extradata_size = size; memcpy(avctx->extradata, fbi.sLayerInfo[0].pBsBuf, size); } props = ff_add_cpb_side_data(avctx); -if (!props) { -err = AVERROR(ENOMEM); -goto fail; -} +if (!props) +return AVERROR(ENOMEM); props->max_bitrate = param.iMaxBitrate; props->avg_bitrate = param.iTargetBitrate; return 0; - -fail: -svc_encode_close(avctx); -return err; } static int svc_encode_frame(AVCodecContext *avctx, AVPacket *avpkt, @@ -306,6 +294,7 @@ AVCodec ff_libopenh264_encoder = { .encode2= svc_encode_frame, .close = svc_encode_close, .capabilities = AV_CODEC_CAP_AUTO_THREADS, +.caps_internal = FF_CODEC_CAP_INIT_THREADSAFE | FF_CODEC_CAP_INIT_CLEANUP, .pix_fmts = (const enum AVPixelFormat[]){ AV_PIX_FMT_YUV420P, AV_PIX_FMT_NONE }, .priv_class = , == ___ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog
[FFmpeg-cvslog] Merge commit '2d097c16b833c532ac974a7f1fd05c0a1f3b7675'
ffmpeg | branch: master | Hendrik Leppkes <h.lepp...@gmail.com> | Fri Nov 18 10:46:02 2016 +0100| [7e9474ca47fd4d267bdafcc8162fded67f6410e5] | committer: Hendrik Leppkes Merge commit '2d097c16b833c532ac974a7f1fd05c0a1f3b7675' * commit '2d097c16b833c532ac974a7f1fd05c0a1f3b7675': libopenh264enc: Return a more sensible error code in some init failure paths Merged-by: Hendrik Leppkes <h.lepp...@gmail.com> > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=7e9474ca47fd4d267bdafcc8162fded67f6410e5 --- libavcodec/libopenh264enc.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/libavcodec/libopenh264enc.c b/libavcodec/libopenh264enc.c index 14afe90..91f26d0 100644 --- a/libavcodec/libopenh264enc.c +++ b/libavcodec/libopenh264enc.c @@ -167,6 +167,7 @@ FF_ENABLE_DEPRECATION_WARNINGS av_log(avctx, AV_LOG_ERROR, "Invalid combination -slices %d and -max_nal_size %d.\n", avctx->slices, s->max_nal_size); +err = AVERROR(EINVAL); goto fail; } @@ -195,6 +196,7 @@ FF_ENABLE_DEPRECATION_WARNINGS } else { av_log(avctx, AV_LOG_ERROR, "Invalid -max_nal_size, " "specify a valid max_nal_size to use -slice_mode dyn\n"); +err = AVERROR(EINVAL); goto fail; } } == ___ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog
[FFmpeg-cvslog] Merge commit '36b380dcd52ef47d7ba0559ed51192c88d82a9bd'
ffmpeg | branch: master | Hendrik Leppkes <h.lepp...@gmail.com> | Fri Nov 18 10:45:08 2016 +0100| [0bd76401d1666bf8f0a67946d761ed9ba4751e49] | committer: Hendrik Leppkes Merge commit '36b380dcd52ef47d7ba0559ed51192c88d82a9bd' * commit '36b380dcd52ef47d7ba0559ed51192c88d82a9bd': libopenh264dec: Simplify the init thanks to FF_CODEC_CAP_INIT_CLEANUP being set Merged-by: Hendrik Leppkes <h.lepp...@gmail.com> > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=0bd76401d1666bf8f0a67946d761ed9ba4751e49 --- libavcodec/libopenh264dec.c | 15 +-- 1 file changed, 5 insertions(+), 10 deletions(-) diff --git a/libavcodec/libopenh264dec.c b/libavcodec/libopenh264dec.c index ab0a84c..26cc8db 100644 --- a/libavcodec/libopenh264dec.c +++ b/libavcodec/libopenh264dec.c @@ -72,15 +72,12 @@ static av_cold int svc_decode_init(AVCodecContext *avctx) return err; s->packet_fifo = av_fifo_alloc(sizeof(AVPacket)); -if (!s->packet_fifo) { -err = AVERROR(ENOMEM); -goto fail; -} +if (!s->packet_fifo) +return AVERROR(ENOMEM); if (WelsCreateDecoder(>decoder)) { av_log(avctx, AV_LOG_ERROR, "Unable to create decoder\n"); -err = AVERROR_UNKNOWN; -goto fail; +return AVERROR_UNKNOWN; } // Pass all libopenh264 messages to our callback, to allow ourselves to filter them. @@ -98,14 +95,12 @@ static av_cold int svc_decode_init(AVCodecContext *avctx) if ((*s->decoder)->Initialize(s->decoder, ) != cmResultSuccess) { av_log(avctx, AV_LOG_ERROR, "Initialize failed\n"); -err = AVERROR_UNKNOWN; -goto fail; +return AVERROR_UNKNOWN; } avctx->pix_fmt = AV_PIX_FMT_YUV420P; -fail: -return err; +return 0; } static int init_bsf(AVCodecContext *avctx) == ___ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog
[FFmpeg-cvslog] Merge commit '61cb9fac47498a38dfe7623f66aa1f3696e9158c'
ffmpeg | branch: master | Hendrik Leppkes <h.lepp...@gmail.com> | Fri Nov 18 10:44:21 2016 +0100| [8a91452e83e763dc38d84912fe7978acede2c039] | committer: Hendrik Leppkes Merge commit '61cb9fac47498a38dfe7623f66aa1f3696e9158c' * commit '61cb9fac47498a38dfe7623f66aa1f3696e9158c': mov: fix stream extradata_size allocation Merged-by: Hendrik Leppkes <h.lepp...@gmail.com> > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=8a91452e83e763dc38d84912fe7978acede2c039 --- ___ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog
[FFmpeg-cvslog] Merge commit 'd0b1e6049b06eeeeca146ece4d2f199c5dba1565'
ffmpeg | branch: master | Hendrik Leppkes <h.lepp...@gmail.com> | Fri Nov 18 10:44:37 2016 +0100| [6fb07c7d85c0d0464e5bdaaad55cc2b774468b3d] | committer: Hendrik Leppkes Merge commit 'd0b1e6049b06ca146ece4d2f199c5dba1565' * commit 'd0b1e6049b06ca146ece4d2f199c5dba1565': libopenh264dec: Fix cleanup if the init failed early Merged-by: Hendrik Leppkes <h.lepp...@gmail.com> > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=6fb07c7d85c0d0464e5bdaaad55cc2b774468b3d --- ___ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog
[FFmpeg-cvslog] Merge commit '0b1bd1b2057d41fd0ccba7317911c484a50f9207'
ffmpeg | branch: master | Hendrik Leppkes <h.lepp...@gmail.com> | Fri Nov 18 10:20:14 2016 +0100| [d7d6f9c78272949b8b13a52eaa850f0d63842fcf] | committer: Hendrik Leppkes Merge commit '0b1bd1b2057d41fd0ccba7317911c484a50f9207' * commit '0b1bd1b2057d41fd0ccba7317911c484a50f9207': lavd: Drop unneeded av_init_packet()s Merged-by: Hendrik Leppkes <h.lepp...@gmail.com> > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=d7d6f9c78272949b8b13a52eaa850f0d63842fcf --- libavdevice/v4l2.c| 1 - libavdevice/x11grab.c | 1 - 2 files changed, 2 deletions(-) diff --git a/libavdevice/v4l2.c b/libavdevice/v4l2.c index ddf331d..ae51d83 100644 --- a/libavdevice/v4l2.c +++ b/libavdevice/v4l2.c @@ -979,7 +979,6 @@ FF_ENABLE_DEPRECATION_WARNINGS #endif int res; -av_init_packet(pkt); if ((res = mmap_read_frame(ctx, pkt)) < 0) { return res; } diff --git a/libavdevice/x11grab.c b/libavdevice/x11grab.c index 5c8cfc1..65b409f 100644 --- a/libavdevice/x11grab.c +++ b/libavdevice/x11grab.c @@ -544,7 +544,6 @@ static int x11grab_read_packet(AVFormatContext *s1, AVPacket *pkt) s->time_frame += INT64_C(100); } while ((s->time_frame * av_q2d(s->time_base) - curtime) <= 0); -av_init_packet(pkt); pkt->data = image->data; pkt->size = s->frame_size; pkt->pts = curtime; == diff --cc libavdevice/v4l2.c index ddf331d,47241e4..ae51d83 --- a/libavdevice/v4l2.c +++ b/libavdevice/v4l2.c @@@ -979,8 -861,7 +979,7 @@@ FF_ENABLE_DEPRECATION_WARNING #endif int res; - av_init_packet(pkt); -if ((res = mmap_read_frame(s1, pkt)) < 0) { +if ((res = mmap_read_frame(ctx, pkt)) < 0) { return res; } diff --cc libavdevice/x11grab.c index 5c8cfc1,60e2560..65b409f --- a/libavdevice/x11grab.c +++ b/libavdevice/x11grab.c @@@ -539,12 -511,6 +539,11 @@@ static int x11grab_read_packet(AVFormat nanosleep(, NULL); } +/* Calculate the time of the next frame */ +do { + s->time_frame += INT64_C(100); +} while ((s->time_frame * av_q2d(s->time_base) - curtime) <= 0); + - av_init_packet(pkt); pkt->data = image->data; pkt->size = s->frame_size; pkt->pts = curtime; ___ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog
[FFmpeg-cvslog] Merge commit '390b95b88b2b896b63f257f69e434dfc0111e076'
ffmpeg | branch: master | Hendrik Leppkes <h.lepp...@gmail.com> | Fri Nov 18 10:16:54 2016 +0100| [9e1ddc08208d7b484d5d97d4e169c75b91e3ff21] | committer: Hendrik Leppkes Merge commit '390b95b88b2b896b63f257f69e434dfc0111e076' * commit '390b95b88b2b896b63f257f69e434dfc0111e076': fate: Add a mixed NAL coding sample Merged-by: Hendrik Leppkes <h.lepp...@gmail.com> > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=9e1ddc08208d7b484d5d97d4e169c75b91e3ff21 --- tests/fate/h264.mak | 5 + tests/ref/fate/h264-mixed-nal-coding | 10 ++ 2 files changed, 15 insertions(+) diff --git a/tests/fate/h264.mak b/tests/fate/h264.mak index 7681943..c366d86 100644 --- a/tests/fate/h264.mak +++ b/tests/fate/h264.mak @@ -206,6 +206,10 @@ FATE_H264-$(call DEMDEC, MOV, H264) += fate-h264-interlace-crop # by using a previous ref frame instead of a missing one FATE_H264-$(call DEMDEC, MOV, H264) += fate-h264-invalid-ref-mod +# this sample gives an explicit size for a single NAL unit, but contains +# several NAL units +FATE_H264-$(call DEMDEC, MOV, H264) += fate-h264-mixed-nal-coding + # this sample has invalid extradata that is not escaped FATE_H264-$(call DEMDEC, MOV, H264) += fate-h264-unescaped-extradata @@ -423,6 +427,7 @@ fate-h264-skip-nokey: CMD = framecrc -skip_frame nok fate-h264-skip-nointra: CMD = framecrc -skip_frame nointra -i $(TARGET_SAMPLES)/h264/h264_intra_first-small.ts fate-h264-invalid-ref-mod:CMD = framecrc -i $(TARGET_SAMPLES)/h264/h264refframeregression.mp4 -an -frames 10 -pix_fmt yuv420p10le fate-h264-lossless: CMD = framecrc -i $(TARGET_SAMPLES)/h264/lossless.h264 +fate-h264-mixed-nal-coding: CMD = framecrc -i $(TARGET_SAMPLES)/h264/mixed-nal-coding.mp4 fate-h264-unescaped-extradata:CMD = framecrc -i $(TARGET_SAMPLES)/h264/unescaped_extradata.mp4 -an -frames 10 fate-h264-3386: CMD = framecrc -i $(TARGET_SAMPLES)/h264/bbc2.sample.h264 diff --git a/tests/ref/fate/h264-mixed-nal-coding b/tests/ref/fate/h264-mixed-nal-coding new file mode 100644 index 000..24b6b4c --- /dev/null +++ b/tests/ref/fate/h264-mixed-nal-coding @@ -0,0 +1,10 @@ +#tb 0: 1001/3 +#media_type 0: video +#codec_id 0: rawvideo +#dimensions 0: 720x480 +#sar 0: 40/33 +0, 0, 0,1, 518400, 0x8f882e4d +0, 1, 1,1, 518400, 0xc5694144 +0, 2, 2,1, 518400, 0xcf0e9e3a +0, 3, 3,1, 518400, 0xf620e459 +0, 4, 4,1, 518400, 0x4566453e == diff --cc tests/fate/h264.mak index 7681943,bbce95d..c366d86 --- a/tests/fate/h264.mak +++ b/tests/fate/h264.mak @@@ -241,191 -220,171 +245,192 @@@ fate-h264-conformance-caba2_sva_b fate-h264-conformance-caba3_sony_c: CMD = framecrc -i $(TARGET_SAMPLES)/h264-conformance/CABA3_Sony_C.jsv fate-h264-conformance-caba3_sva_b:CMD = framecrc -i $(TARGET_SAMPLES)/h264-conformance/CABA3_SVA_B.264 fate-h264-conformance-caba3_toshiba_e:CMD = framecrc -i $(TARGET_SAMPLES)/h264-conformance/CABA3_TOSHIBA_E.264 -fate-h264-conformance-cabac_mot_fld0_full:CMD = framecrc -i $(TARGET_SAMPLES)/h264-conformance/camp_mot_fld0_full.26l -fate-h264-conformance-cabac_mot_frm0_full:CMD = framecrc -i $(TARGET_SAMPLES)/h264-conformance/camp_mot_frm0_full.26l -fate-h264-conformance-cabac_mot_mbaff0_full: CMD = framecrc -i $(TARGET_SAMPLES)/h264-conformance/camp_mot_mbaff0_full.26l -fate-h264-conformance-cabac_mot_picaff0_full: CMD = framecrc -i $(TARGET_SAMPLES)/h264-conformance/camp_mot_picaff0_full.26l -fate-h264-conformance-cabaci3_sony_b: CMD = framecrc -i $(TARGET_SAMPLES)/h264-conformance/CABACI3_Sony_B.jsv -fate-h264-conformance-cabast3_sony_e: CMD = framecrc -i $(TARGET_SAMPLES)/h264-conformance/CABAST3_Sony_E.jsv -fate-h264-conformance-cabastbr3_sony_b: CMD = framecrc -i $(TARGET_SAMPLES)/h264-conformance/CABASTBR3_Sony_B.jsv -fate-h264-conformance-cabref3_sand_d: CMD = framecrc -i $(TARGET_SAMPLES)/h264-conformance/CABREF3_Sand_D.264 -fate-h264-conformance-cacqp3_sony_d: CMD = framecrc -i $(TARGET_SAMPLES)/h264-conformance/CACQP3_Sony_D.jsv -fate-h264-conformance-cafi1_sva_c:CMD = framecrc -i $(TARGET_SAMPLES)/h264-conformance/CAFI1_SVA_C.264 -fate-h264-conformance-cama1_sony_c: CMD = framecrc -i $(TARGET_SAMPLES)/h264-conformance/CAMA1_Sony_C.jsv -fate-h264-conformance-cama1_toshiba_b:CMD = framecrc -i $(TARGET_SAMPLES)/h264-conformance/CAMA1_TOSHIBA_B.264 -fate-h264-conformance-cama1_vtc_c:CMD = framecrc -i $(TARGET_SAMPLES)/h264-conformance/
[FFmpeg-cvslog] Merge commit 'cbbb404055877e3beb9890ffe22784a6a100963e'
ffmpeg | branch: master | Hendrik Leppkes <h.lepp...@gmail.com> | Thu Nov 17 15:27:27 2016 +0100| [1398ded7a77b2057a3e9983e3df512855b7ff0eb] | committer: Hendrik Leppkes Merge commit 'cbbb404055877e3beb9890ffe22784a6a100963e' * commit 'cbbb404055877e3beb9890ffe22784a6a100963e': fate: Restore order of h264 entries Merged-by: Hendrik Leppkes <h.lepp...@gmail.com> > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=1398ded7a77b2057a3e9983e3df512855b7ff0eb --- tests/fate/h264.mak | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/fate/h264.mak b/tests/fate/h264.mak index f8ef3f4..7681943 100644 --- a/tests/fate/h264.mak +++ b/tests/fate/h264.mak @@ -412,17 +412,17 @@ fate-h264-conformance-sva_nl2_e: CMD = framecrc -vsync drop -i fate-h264-bsf-mp4toannexb:CMD = md5 -i $(TARGET_SAMPLES)/h264/interlaced_crop.mp4 -vcodec copy -f h264 fate-h264-crop-to-container: CMD = framemd5 -i $(TARGET_SAMPLES)/h264/crop-to-container-dims-canon.mov +fate-h264-direct-bff: CMD = framecrc -i $(TARGET_SAMPLES)/h264/direct-bff.mkv fate-h264-extradata-reload: CMD = framemd5 -i $(TARGET_SAMPLES)/h264/extradata-reload-multi-stsd.mov fate-h264-extreme-plane-pred: CMD = framemd5 -i $(TARGET_SAMPLES)/h264/extreme-plane-pred.h264 fate-h264-interlace-crop: CMD = framecrc -i $(TARGET_SAMPLES)/h264/interlaced_crop.mp4 -vframes 3 -fate-h264-lossless: CMD = framecrc -i $(TARGET_SAMPLES)/h264/lossless.h264 -fate-h264-direct-bff: CMD = framecrc -i $(TARGET_SAMPLES)/h264/direct-bff.mkv fate-h264-brokensps-2580: CMD = framecrc -i $(TARGET_SAMPLES)/h264/brokensps.flv -vf format=yuv420p,scale=w=192:h=144 -sws_flags bitexact+bilinear fate-h264-xavc-4389: CMD = framecrc -i $(TARGET_SAMPLES)/h264/SonyXAVC_LongGOP_green_pixelation_early_Frames.MXF -pix_fmt yuv422p10le fate-h264-attachment-631: CMD = framecrc -i $(TARGET_SAMPLES)/h264/attachment631-small.mp4 -an -max_error_rate 0.95 fate-h264-skip-nokey: CMD = framecrc -skip_frame nokey -i $(TARGET_SAMPLES)/h264/h264_intra_first-small.ts fate-h264-skip-nointra: CMD = framecrc -skip_frame nointra -i $(TARGET_SAMPLES)/h264/h264_intra_first-small.ts fate-h264-invalid-ref-mod:CMD = framecrc -i $(TARGET_SAMPLES)/h264/h264refframeregression.mp4 -an -frames 10 -pix_fmt yuv420p10le +fate-h264-lossless: CMD = framecrc -i $(TARGET_SAMPLES)/h264/lossless.h264 fate-h264-unescaped-extradata:CMD = framecrc -i $(TARGET_SAMPLES)/h264/unescaped_extradata.mp4 -an -frames 10 fate-h264-3386: CMD = framecrc -i $(TARGET_SAMPLES)/h264/bbc2.sample.h264 == diff --cc tests/fate/h264.mak index f8ef3f4,29ef25c..7681943 --- a/tests/fate/h264.mak +++ b/tests/fate/h264.mak @@@ -241,191 -216,170 +241,191 @@@ fate-h264-conformance-caba2_sva_b fate-h264-conformance-caba3_sony_c: CMD = framecrc -i $(TARGET_SAMPLES)/h264-conformance/CABA3_Sony_C.jsv fate-h264-conformance-caba3_sva_b:CMD = framecrc -i $(TARGET_SAMPLES)/h264-conformance/CABA3_SVA_B.264 fate-h264-conformance-caba3_toshiba_e:CMD = framecrc -i $(TARGET_SAMPLES)/h264-conformance/CABA3_TOSHIBA_E.264 -fate-h264-conformance-cabac_mot_fld0_full:CMD = framecrc -i $(TARGET_SAMPLES)/h264-conformance/camp_mot_fld0_full.26l -fate-h264-conformance-cabac_mot_frm0_full:CMD = framecrc -i $(TARGET_SAMPLES)/h264-conformance/camp_mot_frm0_full.26l -fate-h264-conformance-cabac_mot_mbaff0_full: CMD = framecrc -i $(TARGET_SAMPLES)/h264-conformance/camp_mot_mbaff0_full.26l -fate-h264-conformance-cabac_mot_picaff0_full: CMD = framecrc -i $(TARGET_SAMPLES)/h264-conformance/camp_mot_picaff0_full.26l -fate-h264-conformance-cabaci3_sony_b: CMD = framecrc -i $(TARGET_SAMPLES)/h264-conformance/CABACI3_Sony_B.jsv -fate-h264-conformance-cabast3_sony_e: CMD = framecrc -i $(TARGET_SAMPLES)/h264-conformance/CABAST3_Sony_E.jsv -fate-h264-conformance-cabastbr3_sony_b: CMD = framecrc -i $(TARGET_SAMPLES)/h264-conformance/CABASTBR3_Sony_B.jsv -fate-h264-conformance-cabref3_sand_d: CMD = framecrc -i $(TARGET_SAMPLES)/h264-conformance/CABREF3_Sand_D.264 -fate-h264-conformance-cacqp3_sony_d: CMD = framecrc -i $(TARGET_SAMPLES)/h264-conformance/CACQP3_Sony_D.jsv -fate-h264-conformance-cafi1_sva_c:CMD = framecrc -i $(TARGET_SAMPLES)/h264-conformance/CAFI1_SVA_C.264 -fate-h264-conformance-cama1_sony_c: CMD = framecrc -i $
[FFmpeg-cvslog] Merge commit '61bd0ed781b56eea1e8e851aab34a2ee3b59fbac'
ffmpeg | branch: master | Hendrik Leppkes <h.lepp...@gmail.com> | Thu Nov 17 15:24:25 2016 +0100| [2f1a539d4b905a418aec4b420adcb7648eba5c64] | committer: Hendrik Leppkes Merge commit '61bd0ed781b56eea1e8e851aab34a2ee3b59fbac' * commit '61bd0ed781b56eea1e8e851aab34a2ee3b59fbac': h264: Log more information about invalid NALu size Merged-by: Hendrik Leppkes <h.lepp...@gmail.com> > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=2f1a539d4b905a418aec4b420adcb7648eba5c64 --- libavcodec/h2645_parse.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libavcodec/h2645_parse.h b/libavcodec/h2645_parse.h index 3a60f3f..5f3e17a 100644 --- a/libavcodec/h2645_parse.h +++ b/libavcodec/h2645_parse.h @@ -104,7 +104,7 @@ static inline int get_nalsize(int nal_length_size, const uint8_t *buf, nalsize = ((unsigned)nalsize << 8) | buf[(*buf_index)++]; if (nalsize <= 0 || nalsize > buf_size - *buf_index) { av_log(logctx, AV_LOG_ERROR, - "Invalid nal size %d\n", nalsize); + "Invalid NAL unit size (%d > %d).\n", nalsize, buf_size - *buf_index); return AVERROR_INVALIDDATA; } return nalsize; == diff --cc libavcodec/h2645_parse.h index 3a60f3f,9cc4441..5f3e17a --- a/libavcodec/h2645_parse.h +++ b/libavcodec/h2645_parse.h @@@ -90,24 -85,4 +90,24 @@@ int ff_h2645_packet_split(H2645Packet * */ void ff_h2645_packet_uninit(H2645Packet *pkt); +static inline int get_nalsize(int nal_length_size, const uint8_t *buf, + int buf_size, int *buf_index, void *logctx) +{ +int i, nalsize = 0; + +if (*buf_index >= buf_size - nal_length_size) { +// the end of the buffer is reached, refill it +return AVERROR(EAGAIN); +} + +for (i = 0; i < nal_length_size; i++) +nalsize = ((unsigned)nalsize << 8) | buf[(*buf_index)++]; +if (nalsize <= 0 || nalsize > buf_size - *buf_index) { +av_log(logctx, AV_LOG_ERROR, -"Invalid nal size %d\n", nalsize); ++ "Invalid NAL unit size (%d > %d).\n", nalsize, buf_size - *buf_index); +return AVERROR_INVALIDDATA; +} +return nalsize; +} + #endif /* AVCODEC_H2645_PARSE_H */ ___ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog
[FFmpeg-cvslog] Merge commit '80fbb7becae530167373fe5178966b7d7604306e'
ffmpeg | branch: master | Hendrik Leppkes <h.lepp...@gmail.com> | Thu Nov 17 15:20:10 2016 +0100| [c0af1ee90dcb760dda0ae9f014fcb748bb196fb3] | committer: Hendrik Leppkes Merge commit '80fbb7becae530167373fe5178966b7d7604306e' * commit '80fbb7becae530167373fe5178966b7d7604306e': checkasm: vp8.mc: initialize the full src buffer after ec32574209f Merged-by: Hendrik Leppkes <h.lepp...@gmail.com> > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=c0af1ee90dcb760dda0ae9f014fcb748bb196fb3 --- tests/checkasm/vp8dsp.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/checkasm/vp8dsp.c b/tests/checkasm/vp8dsp.c index 1e64481..d3aff99 100644 --- a/tests/checkasm/vp8dsp.c +++ b/tests/checkasm/vp8dsp.c @@ -247,7 +247,7 @@ static void check_luma_dc_wht(void) } #define SRC_BUF_STRIDE 32 -#define SRC_BUF_SIZE ((size + 5) * SRC_BUF_STRIDE) +#define SRC_BUF_SIZE (((size << (size < 16)) + 5) * SRC_BUF_STRIDE) // The mc subpixel interpolation filter needs the 2 previous pixels in either // direction, the +1 is to make sure the actual load addresses always are // unaligned. == ___ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog
[FFmpeg-cvslog] Merge commit '17c99b6158f2c6720af74e81ee727ee50d2e7e96'
ffmpeg | branch: master | Hendrik Leppkes <h.lepp...@gmail.com> | Thu Nov 17 15:19:49 2016 +0100| [62d9b7a69b9bf1ec702fe46c5f31bf88c85d22a2] | committer: Hendrik Leppkes Merge commit '17c99b6158f2c6720af74e81ee727ee50d2e7e96' * commit '17c99b6158f2c6720af74e81ee727ee50d2e7e96': h2645_parse: handle embedded Annex B NAL units in size prefixed NAL units This commit is a noop, see a9bb4cf87d1eb68f9ed2dc971e3400b95c1a6a78 Merged-by: Hendrik Leppkes <h.lepp...@gmail.com> > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=62d9b7a69b9bf1ec702fe46c5f31bf88c85d22a2 --- ___ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog
[FFmpeg-cvslog] Merge commit 'a8cbe5a0ccebf60a8a8b0aba5d5716dd54c1595c'
ffmpeg | branch: master | Hendrik Leppkes <h.lepp...@gmail.com> | Thu Nov 17 15:17:21 2016 +0100| [cca4fd477851c3ab3b4ee7da525d5eb81bbe8de1] | committer: Hendrik Leppkes Merge commit 'a8cbe5a0ccebf60a8a8b0aba5d5716dd54c1595c' * commit 'a8cbe5a0ccebf60a8a8b0aba5d5716dd54c1595c': h264_ps: export actual height in MBs as SPS.mb_height Merged-by: Hendrik Leppkes <h.lepp...@gmail.com> > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=cca4fd477851c3ab3b4ee7da525d5eb81bbe8de1 --- libavcodec/h264_ps.c| 13 ++--- libavcodec/h264_ps.h| 3 ++- libavcodec/h264_slice.c | 8 3 files changed, 16 insertions(+), 8 deletions(-) diff --git a/libavcodec/h264_ps.c b/libavcodec/h264_ps.c index 4a5f66e..8218e3a 100644 --- a/libavcodec/h264_ps.c +++ b/libavcodec/h264_ps.c @@ -467,15 +467,22 @@ int ff_h264_decode_seq_parameter_set(GetBitContext *gb, AVCodecContext *avctx, sps->mb_height = get_ue_golomb(gb) + 1; sps->frame_mbs_only_flag = get_bits1(gb); + +if (sps->mb_height >= INT_MAX / 2) { +av_log(avctx, AV_LOG_ERROR, "height overflow\n"); +goto fail; +} +sps->mb_height *= 2 - sps->frame_mbs_only_flag; + if (!sps->frame_mbs_only_flag) sps->mb_aff = get_bits1(gb); else sps->mb_aff = 0; if ((unsigned)sps->mb_width >= INT_MAX / 16 || -(unsigned)sps->mb_height >= INT_MAX / (16 * (2 - sps->frame_mbs_only_flag)) || +(unsigned)sps->mb_height >= INT_MAX / 16 || av_image_check_size(16 * sps->mb_width, -16 * sps->mb_height * (2 - sps->frame_mbs_only_flag), 0, avctx)) { +16 * sps->mb_height, 0, avctx)) { av_log(avctx, AV_LOG_ERROR, "mb_width/height overflow\n"); goto fail; } @@ -494,7 +501,7 @@ int ff_h264_decode_seq_parameter_set(GetBitContext *gb, AVCodecContext *avctx, unsigned int crop_top= get_ue_golomb(gb); unsigned int crop_bottom = get_ue_golomb(gb); int width = 16 * sps->mb_width; -int height = 16 * sps->mb_height * (2 - sps->frame_mbs_only_flag); +int height = 16 * sps->mb_height; if (avctx->flags2 & AV_CODEC_FLAG2_IGNORE_CROP) { av_log(avctx, AV_LOG_DEBUG, "discarding sps cropping, original " diff --git a/libavcodec/h264_ps.h b/libavcodec/h264_ps.h index 9b9e295..51b6694 100644 --- a/libavcodec/h264_ps.h +++ b/libavcodec/h264_ps.h @@ -56,7 +56,8 @@ typedef struct SPS { int ref_frame_count; ///< num_ref_frames int gaps_in_frame_num_allowed_flag; int mb_width; ///< pic_width_in_mbs_minus1 + 1 -int mb_height; ///< pic_height_in_map_units_minus1 + 1 +///< (pic_height_in_map_units_minus1 + 1) * (2 - frame_mbs_only_flag) +int mb_height; int frame_mbs_only_flag; int mb_aff;///< mb_adaptive_frame_field_flag int direct_8x8_inference_flag; diff --git a/libavcodec/h264_slice.c b/libavcodec/h264_slice.c index 25a5890..1f2c065 100644 --- a/libavcodec/h264_slice.c +++ b/libavcodec/h264_slice.c @@ -1032,7 +1032,7 @@ static int h264_init_ps(H264Context *h, const H264SliceContext *sl, int first_sl h->ps.sps = (const SPS*)h->ps.sps_ref->data; if (h->mb_width != h->ps.sps->mb_width || -h->mb_height != h->ps.sps->mb_height * (2 - h->ps.sps->frame_mbs_only_flag) || +h->mb_height != h->ps.sps->mb_height || h->cur_bit_depth_luma!= h->ps.sps->bit_depth_luma || h->cur_chroma_format_idc != h->ps.sps->chroma_format_idc ) @@ -1046,11 +1046,11 @@ static int h264_init_ps(H264Context *h, const H264SliceContext *sl, int first_sl must_reinit = (h->context_initialized && ( 16*sps->mb_width != h->avctx->coded_width - || 16*sps->mb_height * (2 - sps->frame_mbs_only_flag) != h->avctx->coded_height + || 16*sps->mb_height != h->avctx->coded_height || h->cur_bit_depth_luma!= sps->bit_depth_luma || h->cur_chroma_format_idc != sps->chroma_format_idc || h->mb_width != sps->mb_width - || h->mb_height != sps->mb_height * (2 - sps->frame_mbs_only_flag) + || h->mb_height != sps->mb_height )); if (h->avctx->pix_fmt == AV_PIX_FMT_NONE || (non_j_pixfmt(h->avctx->pix_fmt) != non_j_pixfmt(get_pixel_format(h, 0 @@ -1065,7 +1065,7 @@ static int h264_init_ps(H264Context *h, const H264SliceContext *sl, int first_sl h-
[FFmpeg-cvslog] Merge commit '99cf943339a2e5171863c48cd1a73dd43dc243e1'
ffmpeg | branch: master | Hendrik Leppkes <h.lepp...@gmail.com> | Thu Nov 17 15:06:42 2016 +0100| [4c5c522fc1a55940e931ece665b2b249d8f39bb1] | committer: Hendrik Leppkes Merge commit '99cf943339a2e5171863c48cd1a73dd43dc243e1' * commit '99cf943339a2e5171863c48cd1a73dd43dc243e1': d3d11va: don't keep the context lock while waiting for a frame Merged-by: Hendrik Leppkes <h.lepp...@gmail.com> > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=4c5c522fc1a55940e931ece665b2b249d8f39bb1 --- ___ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog
[FFmpeg-cvslog] Merge commit '8c816c0c9b12fdefd9046415e97df299880bc9b8'
ffmpeg | branch: master | Hendrik Leppkes <h.lepp...@gmail.com> | Thu Nov 17 15:06:10 2016 +0100| [90b72f6bdac98bbdd4bfddbfdc6038c667d7d30e] | committer: Hendrik Leppkes Merge commit '8c816c0c9b12fdefd9046415e97df299880bc9b8' * commit '8c816c0c9b12fdefd9046415e97df299880bc9b8': checkasm/arm: align the clobber check data properly for ldrd Merged-by: Hendrik Leppkes <h.lepp...@gmail.com> > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=90b72f6bdac98bbdd4bfddbfdc6038c667d7d30e --- tests/checkasm/arm/checkasm.S | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/checkasm/arm/checkasm.S b/tests/checkasm/arm/checkasm.S index 3e3806b..1069adc 100644 --- a/tests/checkasm/arm/checkasm.S +++ b/tests/checkasm/arm/checkasm.S @@ -22,7 +22,7 @@ #include "libavutil/arm/asm.S" -const register_init +const register_init, align=3 .quad 0x21f86d66c8ca00ce .quad 0x75b6ba21077c48ad .quad 0xed56bb2dcb3c7736 == ___ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog
[FFmpeg-cvslog] Merge commit '2866d108c9e9da7baf53ff57a51d470691049a57'
ffmpeg | branch: master | Hendrik Leppkes <h.lepp...@gmail.com> | Thu Nov 17 15:06:28 2016 +0100| [e999a4ed6c63ae88506bcca98ed1dcc59369e723] | committer: Hendrik Leppkes Merge commit '2866d108c9e9da7baf53ff57a51d470691049a57' * commit '2866d108c9e9da7baf53ff57a51d470691049a57': vp8dsp: Remove the comment saying that the height is equal to the width Merged-by: Hendrik Leppkes <h.lepp...@gmail.com> > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=e999a4ed6c63ae88506bcca98ed1dcc59369e723 --- libavcodec/vp8dsp.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libavcodec/vp8dsp.h b/libavcodec/vp8dsp.h index cda7594..eaae4ae 100644 --- a/libavcodec/vp8dsp.h +++ b/libavcodec/vp8dsp.h @@ -70,7 +70,7 @@ typedef struct VP8DSPContext { void (*vp8_h_loop_filter_simple)(uint8_t *dst, ptrdiff_t stride, int flim); /** - * first dimension: 4-log2(width), height is assumed equal to width + * first dimension: 4-log2(width) * second dimension: 0 if no vertical interpolation is needed; * 1 4-tap vertical interpolation filter (my & 1) * 2 6-tap vertical interpolation filter (!(my & 1)) == ___ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog
[FFmpeg-cvslog] Merge commit 'ec32574209f36467ef0d22c21a7e811ba98c15b6'
ffmpeg | branch: master | Hendrik Leppkes <h.lepp...@gmail.com> | Thu Nov 17 15:05:25 2016 +0100| [4fe013fc701acb9a4f0f567604e9f0a0460e9b77] | committer: Hendrik Leppkes Merge commit 'ec32574209f36467ef0d22c21a7e811ba98c15b6' * commit 'ec32574209f36467ef0d22c21a7e811ba98c15b6': checkasm: vp8: mc: test unequal width/height for partitions Merged-by: Hendrik Leppkes <h.lepp...@gmail.com> > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=4fe013fc701acb9a4f0f567604e9f0a0460e9b77 --- tests/checkasm/vp8dsp.c | 16 +--- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/tests/checkasm/vp8dsp.c b/tests/checkasm/vp8dsp.c index 76abe4c..1e64481 100644 --- a/tests/checkasm/vp8dsp.c +++ b/tests/checkasm/vp8dsp.c @@ -268,15 +268,17 @@ static void check_mc(void) LOCAL_ALIGNED_16(uint8_t, dst0, [16 * 16]); LOCAL_ALIGNED_16(uint8_t, dst1, [16 * 16]); VP8DSPContext d; -int type, hsize, dx, dy; +int type, k, dx, dy; declare_func_emms(AV_CPU_FLAG_MMX, void, uint8_t *, ptrdiff_t, uint8_t *, ptrdiff_t, int, int, int); ff_vp78dsp_init(); for (type = 0; type < 2; type++) { vp8_mc_func (*tab)[3][3] = type ? d.put_vp8_bilinear_pixels_tab : d.put_vp8_epel_pixels_tab; -for (hsize = 0; hsize < 3; hsize++) { -int size = 16 >> hsize; +for (k = 1; k < 8; k++) { +int hsize = k / 3; +int size = 16 >> hsize; +int height = (size << 1) >> (k % 3); for (dy = 0; dy < 3; dy++) { for (dx = 0; dx < 3; dx++) { char str[100]; @@ -309,11 +311,11 @@ static void check_mc(void) src[i ] = val; src[i * SRC_BUF_STRIDE] = val; } -call_ref(dst0, size, src, SRC_BUF_STRIDE, size, mx, my); -call_new(dst1, size, src, SRC_BUF_STRIDE, size, mx, my); -if (memcmp(dst0, dst1, size * size)) +call_ref(dst0, size, src, SRC_BUF_STRIDE, height, mx, my); +call_new(dst1, size, src, SRC_BUF_STRIDE, height, mx, my); +if (memcmp(dst0, dst1, size * height)) fail(); -bench_new(dst1, size, src, SRC_BUF_STRIDE, size, mx, my); +bench_new(dst1, size, src, SRC_BUF_STRIDE, height, mx, my); } } } == ___ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog
[FFmpeg-cvslog] Merge commit '5f74bd31a9bd1ac7655103b11743c12d38e0419f'
ffmpeg | branch: master | Hendrik Leppkes <h.lepp...@gmail.com> | Thu Nov 17 15:05:07 2016 +0100| [2818aaaba09da380639a1ed51e4f3ece8cb3b2ec] | committer: Hendrik Leppkes Merge commit '5f74bd31a9bd1ac7655103b11743c12d38e0419f' * commit '5f74bd31a9bd1ac7655103b11743c12d38e0419f': vp8/armv6: mc: avoid boolean expression in calculation Merged-by: Hendrik Leppkes <h.lepp...@gmail.com> > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=2818aaaba09da380639a1ed51e4f3ece8cb3b2ec --- libavcodec/arm/vp8dsp_armv6.S | 9 ++--- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/libavcodec/arm/vp8dsp_armv6.S b/libavcodec/arm/vp8dsp_armv6.S index f1ec6ee..adecd1c 100644 --- a/libavcodec/arm/vp8dsp_armv6.S +++ b/libavcodec/arm/vp8dsp_armv6.S @@ -1226,13 +1226,8 @@ vp8_mc_1bilin, 8, v vp8_mc_1bilin, 4, h vp8_mc_1bilin, 4, v -/* True relational expressions have the value -1 in the GNU assembler, - +1 in Apple's. */ -#ifdef __APPLE__ -# define TMPSIZE \size * (8 + 8*(\size > 4) + \ytaps - 1) -#else -# define TMPSIZE \size * (8 - 8*(\size > 4) + \ytaps - 1) -#endif +@ 4 and 8 pixel wide mc blocks might have height of 8 or 16 lines +#define TMPSIZE \size * (16 / ((16 / \size + 1) / 2) + \ytaps - 1) .macro vp8_mc_hv name, size, h, v, ytaps function ff_put_vp8_\name\size\()_\h\v\()_armv6, export=1 == ___ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog
[FFmpeg-cvslog] Merge commit 'fc5cdc0d5372f5103c71d5dede296734fe71ead2'
ffmpeg | branch: master | Hendrik Leppkes <h.lepp...@gmail.com> | Thu Nov 17 15:04:37 2016 +0100| [711b7b77763cd55d5584ae82ce5cae6d4718092d] | committer: Hendrik Leppkes Merge commit 'fc5cdc0d5372f5103c71d5dede296734fe71ead2' * commit 'fc5cdc0d5372f5103c71d5dede296734fe71ead2': doc: escape left brace in texi2pod.pl regex This commit is a noop, see e43ea1cbb213def50083812936c6a3c8e28a7789 Merged-by: Hendrik Leppkes <h.lepp...@gmail.com> > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=711b7b77763cd55d5584ae82ce5cae6d4718092d --- ___ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog
[FFmpeg-cvslog] Merge commit 'd825b1a5306576dcd0553b7d0d24a3a46ad92864'
ffmpeg | branch: master | Hendrik Leppkes <h.lepp...@gmail.com> | Thu Nov 17 15:01:35 2016 +0100| [da97b244b04b48b827ece6d9635a1d1d1cf2021a] | committer: Hendrik Leppkes Merge commit 'd825b1a5306576dcd0553b7d0d24a3a46ad92864' * commit 'd825b1a5306576dcd0553b7d0d24a3a46ad92864': libopenh264: Support building with the 1.6 release This commit is a noop, see 293676c476733e81d7b596736add6cd510eb6960 Merged-by: Hendrik Leppkes <h.lepp...@gmail.com> > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=da97b244b04b48b827ece6d9635a1d1d1cf2021a --- ___ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog
[FFmpeg-cvslog] Merge commit '4f7723cb3b913c577842a5bb088c804ddacac8df'
ffmpeg | branch: master | Hendrik Leppkes <h.lepp...@gmail.com> | Thu Nov 17 14:54:51 2016 +0100| [4a485daa7fc50fe5eac7a3fc7ce7d83081fa00e1] | committer: Hendrik Leppkes Merge commit '4f7723cb3b913c577842a5bb088c804ddacac8df' * commit '4f7723cb3b913c577842a5bb088c804ddacac8df': movenc: Add an option for skipping writing the mfra/tfra/mfro trailer Merged-by: Hendrik Leppkes <h.lepp...@gmail.com> > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=4a485daa7fc50fe5eac7a3fc7ce7d83081fa00e1 --- libavformat/movenc.c | 29 ++--- libavformat/movenc.h | 1 + 2 files changed, 27 insertions(+), 3 deletions(-) diff --git a/libavformat/movenc.c b/libavformat/movenc.c index 7a726c6..473aac0 100644 --- a/libavformat/movenc.c +++ b/libavformat/movenc.c @@ -72,6 +72,7 @@ static const AVOption options[] = { { "write_colr", "Write colr atom (Experimental, may be renamed or changed, do not use from scripts)", 0, AV_OPT_TYPE_CONST, {.i64 = FF_MOV_FLAG_WRITE_COLR}, INT_MIN, INT_MAX, AV_OPT_FLAG_ENCODING_PARAM, "movflags" }, { "write_gama", "Write deprecated gama atom", 0, AV_OPT_TYPE_CONST, {.i64 = FF_MOV_FLAG_WRITE_GAMA}, INT_MIN, INT_MAX, AV_OPT_FLAG_ENCODING_PARAM, "movflags" }, { "use_metadata_tags", "Use mdta atom for metadata.", 0, AV_OPT_TYPE_CONST, {.i64 = FF_MOV_FLAG_USE_MDTA}, INT_MIN, INT_MAX, AV_OPT_FLAG_ENCODING_PARAM, "movflags" }, +{ "skip_trailer", "Skip writing the mfra/tfra/mfro trailer for fragmented files", 0, AV_OPT_TYPE_CONST, {.i64 = FF_MOV_FLAG_SKIP_TRAILER}, INT_MIN, INT_MAX, AV_OPT_FLAG_ENCODING_PARAM, "movflags" }, FF_RTP_FLAG_OPTS(MOVMuxContext, rtp_flags), { "skip_iods", "Skip writing iods atom.", offsetof(MOVMuxContext, iods_skip), AV_OPT_TYPE_BOOL, {.i64 = 1}, 0, 1, AV_OPT_FLAG_ENCODING_PARAM}, { "iods_audio_profile", "iods audio profile atom.", offsetof(MOVMuxContext, iods_audio_profile), AV_OPT_TYPE_INT, {.i64 = -1}, -1, 255, AV_OPT_FLAG_ENCODING_PARAM}, @@ -3934,6 +3935,20 @@ static int mov_add_tfra_entries(AVIOContext *pb, MOVMuxContext *mov, int tracks, return 0; } +static void mov_prune_frag_info(MOVMuxContext *mov, int tracks, int max) +{ +int i; +for (i = 0; i < mov->nb_streams; i++) { +MOVTrack *track = >tracks[i]; +if ((tracks >= 0 && i != tracks) || !track->entry) +continue; +if (track->nb_frag_info > max) { +memmove(track->frag_info, track->frag_info + (track->nb_frag_info - max), max * sizeof(*track->frag_info)); +track->nb_frag_info = max; +} +} +} + static int mov_write_tfdt_tag(AVIOContext *pb, MOVTrack *track) { int64_t pos = avio_tell(pb); @@ -4119,8 +4134,16 @@ static int mov_write_moof_tag(AVIOContext *pb, MOVMuxContext *mov, int tracks, if (mov->flags & FF_MOV_FLAG_DASH && !(mov->flags & FF_MOV_FLAG_GLOBAL_SIDX)) mov_write_sidx_tags(pb, mov, tracks, moof_size + 8 + mdat_size); -if ((ret = mov_add_tfra_entries(pb, mov, tracks, moof_size + 8 + mdat_size)) < 0) -return ret; +if (mov->flags & FF_MOV_FLAG_GLOBAL_SIDX || +!(mov->flags & FF_MOV_FLAG_SKIP_TRAILER) || +mov->ism_lookahead) { +if ((ret = mov_add_tfra_entries(pb, mov, tracks, moof_size + 8 + mdat_size)) < 0) +return ret; +if (!(mov->flags & FF_MOV_FLAG_GLOBAL_SIDX) && +mov->flags & FF_MOV_FLAG_SKIP_TRAILER) { +mov_prune_frag_info(mov, tracks, mov->ism_lookahead + 1); +} +} return mov_write_moof_tag_internal(pb, mov, tracks, moof_size); } @@ -6150,7 +6173,7 @@ static int mov_write_trailer(AVFormatContext *s) avio_seek(pb, end, SEEK_SET); avio_write_marker(s->pb, AV_NOPTS_VALUE, AVIO_DATA_MARKER_TRAILER); mov_write_mfra_tag(pb, mov); -} else { +} else if (!(mov->flags & FF_MOV_FLAG_SKIP_TRAILER)) { avio_write_marker(s->pb, AV_NOPTS_VALUE, AVIO_DATA_MARKER_TRAILER); mov_write_mfra_tag(pb, mov); } diff --git a/libavformat/movenc.h b/libavformat/movenc.h index 1f7a9d7..4c4f3cd 100644 --- a/libavformat/movenc.h +++ b/libavformat/movenc.h @@ -240,6 +240,7 @@ typedef struct MOVMuxContext { #define FF_MOV_FLAG_WRITE_COLR(1 << 15) #define FF_MOV_FLAG_WRITE_GAMA(1 << 16) #define FF_MOV_FLAG_USE_MDTA (1 << 17) +#define FF_MOV_FLAG_SKIP_TRAILER (1 << 18) int ff_mov_write_packet(AVFormatContext *s, AVPacket *pkt); == diff --cc libavformat/movenc.c index 7a726c6,31b940a..473aac0 --- a/libavformat/mov
[FFmpeg-cvslog] configure: properly add dxva2 link dependencies
ffmpeg | branch: master | Hendrik Leppkes <h.lepp...@gmail.com> | Sat Nov 12 02:02:29 2016 +0100| [99218ee30d7c1a3c49cf5f45a8b4cb4cd34d8199] | committer: Hendrik Leppkes configure: properly add dxva2 link dependencies Fixes building with --disable-everything --enable-shared --enable-dxva2 The hwcontext DXVA2 implementation in avutil needs this library now, instead of just the ffmpeg program. > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=99218ee30d7c1a3c49cf5f45a8b4cb4cd34d8199 --- configure | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/configure b/configure index ceaf115..b5bfad6 100755 --- a/configure +++ b/configure @@ -2540,6 +2540,7 @@ crystalhd_deps="libcrystalhd_libcrystalhd_if_h" cuvid_deps="cuda" d3d11va_deps="d3d11_h dxva_h ID3D11VideoDecoder ID3D11VideoContext" dxva2_deps="dxva2api_h DXVA2_ConfigPictureDecode" +dxva2_extralibs="-luser32" vaapi_deps="va_va_h" vda_framework_deps="VideoDecodeAcceleration_VDADecoder_h" vda_framework_extralibs="-framework VideoDecodeAcceleration" @@ -6318,7 +6319,7 @@ if test $target_os = "haiku"; then fi enabled_all dxva2 dxva2api_cobj CoTaskMemFree && -prepend ffmpeg_libs $($ldflags_filter "-lole32" "-luser32") && +prepend ffmpeg_libs $($ldflags_filter "-lole32") && enable dxva2_lib ! enabled_any memalign posix_memalign aligned_malloc && ___ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog
[FFmpeg-cvslog] Merge commit 'f8d17d53957056c053a46f9320fa7ae6fe1479a5'
ffmpeg | branch: master | Hendrik Leppkes <h.lepp...@gmail.com> | Mon Nov 14 15:27:48 2016 +0100| [47f75839e4995922f18d9eb2a49cf2ac3e8724ad] | committer: Hendrik Leppkes Merge commit 'f8d17d53957056c053a46f9320fa7ae6fe1479a5' * commit 'f8d17d53957056c053a46f9320fa7ae6fe1479a5': checkasm: Add tests for vp8dsp Merged-by: Hendrik Leppkes <h.lepp...@gmail.com> > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=47f75839e4995922f18d9eb2a49cf2ac3e8724ad --- tests/checkasm/Makefile | 1 + tests/checkasm/checkasm.c | 3 + tests/checkasm/checkasm.h | 1 + tests/checkasm/vp8dsp.c | 517 ++ 4 files changed, 522 insertions(+) diff --git a/tests/checkasm/Makefile b/tests/checkasm/Makefile index b886cb0..22a74b6 100644 --- a/tests/checkasm/Makefile +++ b/tests/checkasm/Makefile @@ -6,6 +6,7 @@ AVCODECOBJS-$(CONFIG_FMTCONVERT)+= fmtconvert.o AVCODECOBJS-$(CONFIG_H264DSP) += h264dsp.o AVCODECOBJS-$(CONFIG_H264PRED) += h264pred.o AVCODECOBJS-$(CONFIG_H264QPEL) += h264qpel.o +AVCODECOBJS-$(CONFIG_VP8DSP)+= vp8dsp.o AVCODECOBJS-$(CONFIG_VIDEODSP) += videodsp.o # decoders/encoders diff --git a/tests/checkasm/checkasm.c b/tests/checkasm/checkasm.c index cca227a..f2dbce4 100644 --- a/tests/checkasm/checkasm.c +++ b/tests/checkasm/checkasm.c @@ -98,6 +98,9 @@ static const struct { #if CONFIG_V210_ENCODER { "v210enc", checkasm_check_v210enc }, #endif +#if CONFIG_VP8DSP +{ "vp8dsp", checkasm_check_vp8dsp }, +#endif #if CONFIG_VP9_DECODER { "vp9dsp", checkasm_check_vp9dsp }, #endif diff --git a/tests/checkasm/checkasm.h b/tests/checkasm/checkasm.h index 7877251..a8c955b 100644 --- a/tests/checkasm/checkasm.h +++ b/tests/checkasm/checkasm.h @@ -44,6 +44,7 @@ void checkasm_check_jpeg2000dsp(void); void checkasm_check_pixblockdsp(void); void checkasm_check_synth_filter(void); void checkasm_check_v210enc(void); +void checkasm_check_vp8dsp(void); void checkasm_check_vp9dsp(void); void checkasm_check_videodsp(void); diff --git a/tests/checkasm/vp8dsp.c b/tests/checkasm/vp8dsp.c new file mode 100644 index 000..76abe4c --- /dev/null +++ b/tests/checkasm/vp8dsp.c @@ -0,0 +1,517 @@ +/* + * Copyright (c) 2016 Martin Storsjo + * + * This file is part of FFmpeg. + * + * FFmpeg is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 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 General Public License for more details. + * + * You should have received a copy of the GNU 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. + */ + +#include + +#include "libavcodec/avcodec.h" +#include "libavcodec/vp8dsp.h" + +#include "libavutil/common.h" +#include "libavutil/intreadwrite.h" + +#include "checkasm.h" + +#define PIXEL_STRIDE 16 + +#define randomize_buffers(src, dst, stride, coef)\ +do { \ +int x, y;\ +for (y = 0; y < 4; y++) {\ +AV_WN32A((src) + y * (stride), rnd()); \ +AV_WN32A((dst) + y * (stride), rnd()); \ +for (x = 0; x < 4; x++) \ +(coef)[y * 4 + x] = (src)[y * (stride) + x] -\ +(dst)[y * (stride) + x]; \ +}\ +} while (0) + +static void dct4x4(int16_t *coef) +{ +int i; +for (i = 0; i < 4; i++) { +const int a1 = (coef[i*4 + 0] + coef[i*4 + 3]) * 8; +const int b1 = (coef[i*4 + 1] + coef[i*4 + 2]) * 8; +const int c1 = (coef[i*4 + 1] - coef[i*4 + 2]) * 8; +const int d1 = (coef[i*4 + 0] - coef[i*4 + 3]) * 8; +coef[i*4 + 0] = a1 + b1; +coef[i*4 + 1] = (c1 * 2217 + d1 * 5352 + 14500) >> 12; +coef[i*4 + 2] = a1 - b1; +coef[i*4 + 3] = (d1 * 2217 - c1 * 5352 + 7500) >> 12; +} +for (i = 0; i < 4; i++) { +const int a1 = coef[i + 0*4] + coef[i + 3*4]; +const int b1 = coef[i + 1*4] + coef[i + 2*4]; +const int c1 = coef[i + 1*4] - coef[i + 2*4]; +const int d1 = coef[i + 0*4] - coef[
[FFmpeg-cvslog] Merge commit 'e8b96a77010dd62624c3c65c357d7ae3b397ceaa'
ffmpeg | branch: master | Hendrik Leppkes <h.lepp...@gmail.com> | Mon Nov 14 15:21:49 2016 +0100| [51f5542c776ae89b56d77522fdd2bafde32695b0] | committer: Hendrik Leppkes Merge commit 'e8b96a77010dd62624c3c65c357d7ae3b397ceaa' * commit 'e8b96a77010dd62624c3c65c357d7ae3b397ceaa': arm: Fix a typo in a comment Merged-by: Hendrik Leppkes <h.lepp...@gmail.com> > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=51f5542c776ae89b56d77522fdd2bafde32695b0 --- libavcodec/arm/vp8dsp_armv6.S | 2 +- libavcodec/arm/vp8dsp_neon.S | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/libavcodec/arm/vp8dsp_armv6.S b/libavcodec/arm/vp8dsp_armv6.S index 1adcbbd..f1ec6ee 100644 --- a/libavcodec/arm/vp8dsp_armv6.S +++ b/libavcodec/arm/vp8dsp_armv6.S @@ -1181,7 +1181,7 @@ function ff_put_vp8_pixels4_armv6, export=1 endfunc @ note: worst case sum of all 6-tap filter values * 255 is 0x7f80 so 16 bit -@ arithmatic can be used to apply filters +@ arithmetic can be used to apply filters const sixtap_filters_13245600, align=4 .short 2, 108, -11, 36, -8, 1, 0, 0 .short 3, 77, -16, 77, -16, 3, 0, 0 diff --git a/libavcodec/arm/vp8dsp_neon.S b/libavcodec/arm/vp8dsp_neon.S index 2e87fb0..fcb4248 100644 --- a/libavcodec/arm/vp8dsp_neon.S +++ b/libavcodec/arm/vp8dsp_neon.S @@ -1562,7 +1562,7 @@ function ff_put_vp8_epel4_h4v4_neon, export=1 endfunc @ note: worst case sum of all 6-tap filter values * 255 is 0x7f80 so 16 bit -@ arithmatic can be used to apply filters +@ arithmetic can be used to apply filters const subpel_filters, align=4 .short 0, 6, 123, 12, 1, 0, 0, 0 .short 2, 11, 108, 36, 8, 1, 0, 0 == ___ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog
[FFmpeg-cvslog] Merge commit 'dc08bbf63a217c839aa4c143f2a1d0b7e2e6d997'
ffmpeg | branch: master | Hendrik Leppkes <h.lepp...@gmail.com> | Mon Nov 14 15:21:24 2016 +0100| [5a447edd475a7ae672f385ca0c76a5fc5a56ac1f] | committer: Hendrik Leppkes Merge commit 'dc08bbf63a217c839aa4c143f2a1d0b7e2e6d997' * commit 'dc08bbf63a217c839aa4c143f2a1d0b7e2e6d997': vp8dsp: Clarify the first dimension of the mc function tables Merged-by: Hendrik Leppkes <h.lepp...@gmail.com> > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=5a447edd475a7ae672f385ca0c76a5fc5a56ac1f --- libavcodec/vp8dsp.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/libavcodec/vp8dsp.h b/libavcodec/vp8dsp.h index 0401c92..cda7594 100644 --- a/libavcodec/vp8dsp.h +++ b/libavcodec/vp8dsp.h @@ -70,12 +70,12 @@ typedef struct VP8DSPContext { void (*vp8_h_loop_filter_simple)(uint8_t *dst, ptrdiff_t stride, int flim); /** - * first dimension: width>>3, height is assumed equal to width + * first dimension: 4-log2(width), height is assumed equal to width * second dimension: 0 if no vertical interpolation is needed; * 1 4-tap vertical interpolation filter (my & 1) * 2 6-tap vertical interpolation filter (!(my & 1)) * third dimension: same as second dimension, for horizontal interpolation - * so something like put_vp8_epel_pixels_tab[width>>3][2*!!my-(my&1)][2*!!mx-(mx&1)](..., mx, my) + * so something like put_vp8_epel_pixels_tab[4-log2(width)][2*!!my-(my&1)][2*!!mx-(mx&1)](..., mx, my) */ vp8_mc_func put_vp8_epel_pixels_tab[3][3][3]; vp8_mc_func put_vp8_bilinear_pixels_tab[3][3][3]; == ___ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog
[FFmpeg-cvslog] Merge commit '92736c74fb1633e36f7134a880422a9b7db14d3f'
ffmpeg | branch: master | Hendrik Leppkes <h.lepp...@gmail.com> | Mon Nov 14 15:20:00 2016 +0100| [3c81fa9a9c5f56078e09b564a27821031876ad61] | committer: Hendrik Leppkes Merge commit '92736c74fb1633e36f7134a880422a9b7db14d3f' * commit '92736c74fb1633e36f7134a880422a9b7db14d3f': qsvdec: add support for P010 (10-bit 420) decoding Merged-by: Hendrik Leppkes <h.lepp...@gmail.com> > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=3c81fa9a9c5f56078e09b564a27821031876ad61 --- libavcodec/qsv.c | 3 +++ libavcodec/qsvdec.c | 15 +++ libavcodec/qsvdec_h2645.c | 2 ++ 3 files changed, 16 insertions(+), 4 deletions(-) diff --git a/libavcodec/qsv.c b/libavcodec/qsv.c index 041daa5..aac6ce6 100644 --- a/libavcodec/qsv.c +++ b/libavcodec/qsv.c @@ -112,6 +112,9 @@ int ff_qsv_map_pixfmt(enum AVPixelFormat format, uint32_t *fourcc) case AV_PIX_FMT_YUVJ420P: *fourcc = MFX_FOURCC_NV12; return AV_PIX_FMT_NV12; +case AV_PIX_FMT_YUV420P10: +*fourcc = MFX_FOURCC_P010; +return AV_PIX_FMT_P010; default: return AVERROR(ENOSYS); } diff --git a/libavcodec/qsvdec.c b/libavcodec/qsvdec.c index e166336..e71af59 100644 --- a/libavcodec/qsvdec.c +++ b/libavcodec/qsvdec.c @@ -31,6 +31,7 @@ #include "libavutil/hwcontext_qsv.h" #include "libavutil/mem.h" #include "libavutil/log.h" +#include "libavutil/pixdesc.h" #include "libavutil/pixfmt.h" #include "libavutil/time.h" @@ -86,11 +87,16 @@ static int qsv_init_session(AVCodecContext *avctx, QSVContext *q, mfxSession ses static int qsv_decode_init(AVCodecContext *avctx, QSVContext *q) { +const AVPixFmtDescriptor *desc; mfxSession session = NULL; int iopattern = 0; mfxVideoParam param = { { 0 } }; int ret; +desc = av_pix_fmt_desc_get(avctx->sw_pix_fmt); +if (!desc) +return AVERROR_BUG; + if (!q->async_fifo) { q->async_fifo = av_fifo_alloc((1 + q->async_depth) * (sizeof(mfxSyncPoint*) + sizeof(QSVFrame*))); @@ -136,9 +142,9 @@ static int qsv_decode_init(AVCodecContext *avctx, QSVContext *q) param.mfx.CodecProfile = ff_qsv_profile_to_mfx(avctx->codec_id, avctx->profile); param.mfx.CodecLevel = avctx->level == FF_LEVEL_UNKNOWN ? MFX_LEVEL_UNKNOWN : avctx->level; -param.mfx.FrameInfo.BitDepthLuma = 8; -param.mfx.FrameInfo.BitDepthChroma = 8; -param.mfx.FrameInfo.Shift = 0; +param.mfx.FrameInfo.BitDepthLuma = desc->comp[0].depth; +param.mfx.FrameInfo.BitDepthChroma = desc->comp[0].depth; +param.mfx.FrameInfo.Shift = desc->comp[0].depth > 8; param.mfx.FrameInfo.FourCC = q->fourcc; param.mfx.FrameInfo.Width = avctx->coded_width; param.mfx.FrameInfo.Height = avctx->coded_height; @@ -463,7 +469,8 @@ int ff_qsv_process_data(AVCodecContext *avctx, QSVContext *q, qsv_format = ff_qsv_map_pixfmt(q->parser->format, >fourcc); if (qsv_format < 0) { av_log(avctx, AV_LOG_ERROR, - "Only 8-bit YUV420 streams are supported.\n"); + "Decoding pixel format '%s' is not supported\n", + av_get_pix_fmt_name(q->parser->format)); ret = AVERROR(ENOSYS); goto reinit_fail; } diff --git a/libavcodec/qsvdec_h2645.c b/libavcodec/qsvdec_h2645.c index 94fbd07..aa7aded 100644 --- a/libavcodec/qsvdec_h2645.c +++ b/libavcodec/qsvdec_h2645.c @@ -269,6 +269,7 @@ AVCodec ff_hevc_qsv_decoder = { .capabilities = AV_CODEC_CAP_DELAY | AV_CODEC_CAP_DR1 | AV_CODEC_CAP_AVOID_PROBING, .priv_class = _class, .pix_fmts = (const enum AVPixelFormat[]){ AV_PIX_FMT_NV12, +AV_PIX_FMT_P010, AV_PIX_FMT_QSV, AV_PIX_FMT_NONE }, }; @@ -307,6 +308,7 @@ AVCodec ff_h264_qsv_decoder = { .capabilities = AV_CODEC_CAP_DELAY | AV_CODEC_CAP_DR1 | AV_CODEC_CAP_AVOID_PROBING, .priv_class = , .pix_fmts = (const enum AVPixelFormat[]){ AV_PIX_FMT_NV12, +AV_PIX_FMT_P010, AV_PIX_FMT_QSV, AV_PIX_FMT_NONE }, }; == diff --cc libavcodec/qsvdec.c index e166336,929b9af..e71af59 --- a/libavcodec/qsvdec.c +++ b/libavcodec/qsvdec.c @@@ -133,12 -139,12 +139,12 @@@ static int qsv_decode_init(AVCodecConte return ret; param.mfx.CodecId = ret; -param.mfx.CodecProfile = avctx->profile; -param.mfx.CodecLevel = avct
[FFmpeg-cvslog] Merge commit 'ce320cf1c4daab3e2e3726ed7d2e879d10f7b991'
ffmpeg | branch: master | Hendrik Leppkes <h.lepp...@gmail.com> | Mon Nov 14 15:19:51 2016 +0100| [220e77391552a61d515a1d8c2b17afd876958613] | committer: Hendrik Leppkes Merge commit 'ce320cf1c4daab3e2e3726ed7d2e879d10f7b991' * commit 'ce320cf1c4daab3e2e3726ed7d2e879d10f7b991': qsvdec: use the same mfxFrameInfo for allocating frames that was passed to DECODE_Init Merged-by: Hendrik Leppkes <h.lepp...@gmail.com> > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=220e77391552a61d515a1d8c2b17afd876958613 --- libavcodec/qsvdec.c | 15 ++- libavcodec/qsvdec.h | 1 + 2 files changed, 7 insertions(+), 9 deletions(-) diff --git a/libavcodec/qsvdec.c b/libavcodec/qsvdec.c index 9d3a6da..e166336 100644 --- a/libavcodec/qsvdec.c +++ b/libavcodec/qsvdec.c @@ -176,10 +176,12 @@ static int qsv_decode_init(AVCodecContext *avctx, QSVContext *q) return ff_qsv_error(ret); } +q->frame_info = param.mfx.FrameInfo; + return 0; } -static int alloc_frame(AVCodecContext *avctx, QSVFrame *frame) +static int alloc_frame(AVCodecContext *avctx, QSVContext *q, QSVFrame *frame) { int ret; @@ -190,12 +192,7 @@ static int alloc_frame(AVCodecContext *avctx, QSVFrame *frame) if (frame->frame->format == AV_PIX_FMT_QSV) { frame->surface = (mfxFrameSurface1*)frame->frame->data[3]; } else { -frame->surface_internal.Info.BitDepthLuma = 8; -frame->surface_internal.Info.BitDepthChroma = 8; -frame->surface_internal.Info.FourCC = MFX_FOURCC_NV12; -frame->surface_internal.Info.Width = avctx->coded_width; -frame->surface_internal.Info.Height = avctx->coded_height; -frame->surface_internal.Info.ChromaFormat = MFX_CHROMAFORMAT_YUV420; +frame->surface_internal.Info = q->frame_info; frame->surface_internal.Data.PitchLow = frame->frame->linesize[0]; frame->surface_internal.Data.Y= frame->frame->data[0]; @@ -230,7 +227,7 @@ static int get_surface(AVCodecContext *avctx, QSVContext *q, mfxFrameSurface1 ** last = >work_frames; while (frame) { if (!frame->surface) { -ret = alloc_frame(avctx, frame); +ret = alloc_frame(avctx, q, frame); if (ret < 0) return ret; *surf = frame->surface; @@ -251,7 +248,7 @@ static int get_surface(AVCodecContext *avctx, QSVContext *q, mfxFrameSurface1 ** } *last = frame; -ret = alloc_frame(avctx, frame); +ret = alloc_frame(avctx, q, frame); if (ret < 0) return ret; diff --git a/libavcodec/qsvdec.h b/libavcodec/qsvdec.h index 01f4cf9..41fb716 100644 --- a/libavcodec/qsvdec.h +++ b/libavcodec/qsvdec.h @@ -57,6 +57,7 @@ typedef struct QSVContext { AVCodecContext *avctx_internal; enum AVPixelFormat orig_pix_fmt; uint32_t fourcc; +mfxFrameInfo frame_info; // options set by the caller int async_depth; == ___ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog
[FFmpeg-cvslog] Merge commit '536bb17e9659c5ed7576a218d4085cdd6d5742fa'
ffmpeg | branch: master | Hendrik Leppkes <h.lepp...@gmail.com> | Mon Nov 14 15:19:43 2016 +0100| [1bc6cdf2fcbd3caea7b78d0a617c6e338606d756] | committer: Hendrik Leppkes Merge commit '536bb17e9659c5ed7576a218d4085cdd6d5742fa' * commit '536bb17e9659c5ed7576a218d4085cdd6d5742fa': qsvdec: make ff_qsv_map_pixfmt() return a MFX fourcc as well Merged-by: Hendrik Leppkes <h.lepp...@gmail.com> > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=1bc6cdf2fcbd3caea7b78d0a617c6e338606d756 --- libavcodec/qsv.c | 12 libavcodec/qsv_internal.h | 2 ++ libavcodec/qsvdec.c | 15 ++- libavcodec/qsvdec.h | 3 +-- 4 files changed, 17 insertions(+), 15 deletions(-) diff --git a/libavcodec/qsv.c b/libavcodec/qsv.c index efd7cea..041daa5 100644 --- a/libavcodec/qsv.c +++ b/libavcodec/qsv.c @@ -105,6 +105,18 @@ int ff_qsv_error(int mfx_err) } } +int ff_qsv_map_pixfmt(enum AVPixelFormat format, uint32_t *fourcc) +{ +switch (format) { +case AV_PIX_FMT_YUV420P: +case AV_PIX_FMT_YUVJ420P: +*fourcc = MFX_FOURCC_NV12; +return AV_PIX_FMT_NV12; +default: +return AVERROR(ENOSYS); +} +} + static int qsv_load_plugins(mfxSession session, const char *load_plugins, void *logctx) { diff --git a/libavcodec/qsv_internal.h b/libavcodec/qsv_internal.h index 82e1029..5d2a216 100644 --- a/libavcodec/qsv_internal.h +++ b/libavcodec/qsv_internal.h @@ -65,6 +65,8 @@ int ff_qsv_error(int mfx_err); int ff_qsv_codec_id_to_mfx(enum AVCodecID codec_id); int ff_qsv_profile_to_mfx(enum AVCodecID codec_id, int profile); +int ff_qsv_map_pixfmt(enum AVPixelFormat format, uint32_t *fourcc); + int ff_qsv_init_internal_session(AVCodecContext *avctx, mfxSession *session, const char *load_plugins); diff --git a/libavcodec/qsvdec.c b/libavcodec/qsvdec.c index 51da8f8..9d3a6da 100644 --- a/libavcodec/qsvdec.c +++ b/libavcodec/qsvdec.c @@ -40,17 +40,6 @@ #include "qsv_internal.h" #include "qsvdec.h" -int ff_qsv_map_pixfmt(enum AVPixelFormat format) -{ -switch (format) { -case AV_PIX_FMT_YUV420P: -case AV_PIX_FMT_YUVJ420P: -return AV_PIX_FMT_NV12; -default: -return AVERROR(ENOSYS); -} -} - static int qsv_init_session(AVCodecContext *avctx, QSVContext *q, mfxSession session, AVBufferRef *hw_frames_ref) { @@ -150,7 +139,7 @@ static int qsv_decode_init(AVCodecContext *avctx, QSVContext *q) param.mfx.FrameInfo.BitDepthLuma = 8; param.mfx.FrameInfo.BitDepthChroma = 8; param.mfx.FrameInfo.Shift = 0; -param.mfx.FrameInfo.FourCC = MFX_FOURCC_NV12; +param.mfx.FrameInfo.FourCC = q->fourcc; param.mfx.FrameInfo.Width = avctx->coded_width; param.mfx.FrameInfo.Height = avctx->coded_height; param.mfx.FrameInfo.ChromaFormat = MFX_CHROMAFORMAT_YUV420; @@ -474,7 +463,7 @@ int ff_qsv_process_data(AVCodecContext *avctx, QSVContext *q, AV_PIX_FMT_NONE }; enum AVPixelFormat qsv_format; -qsv_format = ff_qsv_map_pixfmt(q->parser->format); +qsv_format = ff_qsv_map_pixfmt(q->parser->format, >fourcc); if (qsv_format < 0) { av_log(avctx, AV_LOG_ERROR, "Only 8-bit YUV420 streams are supported.\n"); diff --git a/libavcodec/qsvdec.h b/libavcodec/qsvdec.h index 0bf1e55..01f4cf9 100644 --- a/libavcodec/qsvdec.h +++ b/libavcodec/qsvdec.h @@ -56,6 +56,7 @@ typedef struct QSVContext { AVCodecParserContext *parser; AVCodecContext *avctx_internal; enum AVPixelFormat orig_pix_fmt; +uint32_t fourcc; // options set by the caller int async_depth; @@ -67,8 +68,6 @@ typedef struct QSVContext { int nb_ext_buffers; } QSVContext; -int ff_qsv_map_pixfmt(enum AVPixelFormat format); - int ff_qsv_process_data(AVCodecContext *avctx, QSVContext *q, AVFrame *frame, int *got_frame, AVPacket *pkt); == diff --cc libavcodec/qsv_internal.h index 82e1029,e865741..5d2a216 --- a/libavcodec/qsv_internal.h +++ b/libavcodec/qsv_internal.h @@@ -63,8 -60,9 +63,10 @@@ typedef struct QSVFramesContext int ff_qsv_error(int mfx_err); int ff_qsv_codec_id_to_mfx(enum AVCodecID codec_id); +int ff_qsv_profile_to_mfx(enum AVCodecID codec_id, int profile); + int ff_qsv_map_pixfmt(enum AVPixelFormat format, uint32_t *fourcc); + int ff_qsv_init_internal_session(AVCodecContext *avctx, mfxSession *session, const char *load_plugins); ___ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog
[FFmpeg-cvslog] Merge commit '924e2ecd2b7d51cca60c79351ef16b04dd4245c3'
ffmpeg | branch: master | Hendrik Leppkes <h.lepp...@gmail.com> | Mon Nov 14 15:20:09 2016 +0100| [68b0d7e0be66bfa8141f8bd3eaa004b8104b8c34] | committer: Hendrik Leppkes Merge commit '924e2ecd2b7d51cca60c79351ef16b04dd4245c3' * commit '924e2ecd2b7d51cca60c79351ef16b04dd4245c3': qsvdec: when a frames ctx is supplied, use its frame dimensions Merged-by: Hendrik Leppkes <h.lepp...@gmail.com> > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=68b0d7e0be66bfa8141f8bd3eaa004b8104b8c34 --- libavcodec/qsvdec.c | 9 +++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/libavcodec/qsvdec.c b/libavcodec/qsvdec.c index e71af59..ea4abfa 100644 --- a/libavcodec/qsvdec.c +++ b/libavcodec/qsvdec.c @@ -91,6 +91,8 @@ static int qsv_decode_init(AVCodecContext *avctx, QSVContext *q) mfxSession session = NULL; int iopattern = 0; mfxVideoParam param = { { 0 } }; +int frame_width = avctx->coded_width; +int frame_height = avctx->coded_height; int ret; desc = av_pix_fmt_desc_get(avctx->sw_pix_fmt); @@ -122,6 +124,9 @@ static int qsv_decode_init(AVCodecContext *avctx, QSVContext *q) else if (frames_hwctx->frame_type & MFX_MEMTYPE_VIDEO_MEMORY_DECODER_TARGET) iopattern = MFX_IOPATTERN_OUT_VIDEO_MEMORY; } + +frame_width = frames_hwctx->surfaces[0].Info.Width; +frame_height = frames_hwctx->surfaces[0].Info.Height; } if (!iopattern) @@ -146,8 +151,8 @@ static int qsv_decode_init(AVCodecContext *avctx, QSVContext *q) param.mfx.FrameInfo.BitDepthChroma = desc->comp[0].depth; param.mfx.FrameInfo.Shift = desc->comp[0].depth > 8; param.mfx.FrameInfo.FourCC = q->fourcc; -param.mfx.FrameInfo.Width = avctx->coded_width; -param.mfx.FrameInfo.Height = avctx->coded_height; +param.mfx.FrameInfo.Width = frame_width; +param.mfx.FrameInfo.Height = frame_height; param.mfx.FrameInfo.ChromaFormat = MFX_CHROMAFORMAT_YUV420; switch (avctx->field_order) { == diff --cc libavcodec/qsvdec.c index e71af59,5b36489..ea4abfa --- a/libavcodec/qsvdec.c +++ b/libavcodec/qsvdec.c @@@ -146,25 -151,10 +151,25 @@@ static int qsv_decode_init(AVCodecConte param.mfx.FrameInfo.BitDepthChroma = desc->comp[0].depth; param.mfx.FrameInfo.Shift = desc->comp[0].depth > 8; param.mfx.FrameInfo.FourCC = q->fourcc; - param.mfx.FrameInfo.Width = avctx->coded_width; - param.mfx.FrameInfo.Height = avctx->coded_height; + param.mfx.FrameInfo.Width = frame_width; + param.mfx.FrameInfo.Height = frame_height; param.mfx.FrameInfo.ChromaFormat = MFX_CHROMAFORMAT_YUV420; +switch (avctx->field_order) { +case AV_FIELD_PROGRESSIVE: +param.mfx.FrameInfo.PicStruct = MFX_PICSTRUCT_PROGRESSIVE; +break; +case AV_FIELD_TT: +param.mfx.FrameInfo.PicStruct = MFX_PICSTRUCT_FIELD_TFF; +break; +case AV_FIELD_BB: +param.mfx.FrameInfo.PicStruct = MFX_PICSTRUCT_FIELD_BFF; +break; +default: +param.mfx.FrameInfo.PicStruct = MFX_PICSTRUCT_UNKNOWN; +break; +} + param.IOPattern = q->iopattern; param.AsyncDepth = q->async_depth; param.ExtParam= q->ext_buffers; ___ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog
[FFmpeg-cvslog] Merge commit 'd20c118975220a0256027d1c2410bade94b8534d'
ffmpeg | branch: master | Hendrik Leppkes <h.lepp...@gmail.com> | Mon Nov 14 15:18:49 2016 +0100| [e122a725fbe9bc5c1bb6047d6be8e0f504d660b9] | committer: Hendrik Leppkes Merge commit 'd20c118975220a0256027d1c2410bade94b8534d' * commit 'd20c118975220a0256027d1c2410bade94b8534d': hwcontext_qsv: add support for p010 Merged-by: Hendrik Leppkes <h.lepp...@gmail.com> > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=e122a725fbe9bc5c1bb6047d6be8e0f504d660b9 --- libavutil/hwcontext_qsv.c | 1 + 1 file changed, 1 insertion(+) diff --git a/libavutil/hwcontext_qsv.c b/libavutil/hwcontext_qsv.c index 13be5b0..03244a6 100644 --- a/libavutil/hwcontext_qsv.c +++ b/libavutil/hwcontext_qsv.c @@ -90,6 +90,7 @@ static const struct { uint32_t fourcc; } supported_pixel_formats[] = { { AV_PIX_FMT_NV12, MFX_FOURCC_NV12 }, +{ AV_PIX_FMT_P010, MFX_FOURCC_P010 }, }; static int qsv_device_init(AVHWDeviceContext *ctx) == ___ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog
[FFmpeg-cvslog] Merge commit '40f74dc87acb3f5bbb51f273790a4a7a64201b16'
ffmpeg | branch: master | Hendrik Leppkes <h.lepp...@gmail.com> | Mon Nov 14 15:18:23 2016 +0100| [15352568132ce93846466379891d613f9c6d0eaa] | committer: Hendrik Leppkes Merge commit '40f74dc87acb3f5bbb51f273790a4a7a64201b16' * commit '40f74dc87acb3f5bbb51f273790a4a7a64201b16': matroskadec: export CodecDelay Noop, we already export CodecDelay Merged-by: Hendrik Leppkes <h.lepp...@gmail.com> > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=15352568132ce93846466379891d613f9c6d0eaa --- ___ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog
[FFmpeg-cvslog] Merge commit '582d4211e00015b68626f77ce4af53161e2b1713'
ffmpeg | branch: master | Hendrik Leppkes <h.lepp...@gmail.com> | Mon Nov 14 15:16:56 2016 +0100| [745a44ee6130358ae185b28e3583ccf573bbb1a2] | committer: Hendrik Leppkes Merge commit '582d4211e00015b68626f77ce4af53161e2b1713' * commit '582d4211e00015b68626f77ce4af53161e2b1713': vf_scale_vaapi: Respect driver quirks around buffer destruction Merged-by: Hendrik Leppkes <h.lepp...@gmail.com> > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=745a44ee6130358ae185b28e3583ccf573bbb1a2 --- ___ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog
[FFmpeg-cvslog] Merge commit '221ffca6314ed3ba9d38464ea50cd85251c04e74'
ffmpeg | branch: master | Hendrik Leppkes <h.lepp...@gmail.com> | Mon Nov 14 15:16:39 2016 +0100| [190254f8810f8c9c40ce129add652a5120097b3b] | committer: Hendrik Leppkes Merge commit '221ffca6314ed3ba9d38464ea50cd85251c04e74' * commit '221ffca6314ed3ba9d38464ea50cd85251c04e74': vaapi_encode: Respect driver quirks around buffer destruction Merged-by: Hendrik Leppkes <h.lepp...@gmail.com> > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=190254f8810f8c9c40ce129add652a5120097b3b --- ___ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog
[FFmpeg-cvslog] Merge commit '4926fa9a4aa03f3b751f52e900b9efb87fea0591'
ffmpeg | branch: master | Hendrik Leppkes <h.lepp...@gmail.com> | Mon Nov 14 15:16:31 2016 +0100| [6ace05beec179d9c370fc404b678db3873af7531] | committer: Hendrik Leppkes Merge commit '4926fa9a4aa03f3b751f52e900b9efb87fea0591' * commit '4926fa9a4aa03f3b751f52e900b9efb87fea0591': hwcontext_vaapi: Add driver quirks to the hwdevice Merged-by: Hendrik Leppkes <h.lepp...@gmail.com> > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=6ace05beec179d9c370fc404b678db3873af7531 --- ___ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog
[FFmpeg-cvslog] Merge commit '2ef87815fec059504370ae3050cc243a53553915'
ffmpeg | branch: master | Hendrik Leppkes <h.lepp...@gmail.com> | Mon Nov 14 15:15:19 2016 +0100| [3dfe97a841fe6985357357ef0b93601bfe531bf8] | committer: Hendrik Leppkes Merge commit '2ef87815fec059504370ae3050cc243a53553915' * commit '2ef87815fec059504370ae3050cc243a53553915': hwcontext_dxva2: add support for p010 Merged-by: Hendrik Leppkes <h.lepp...@gmail.com> > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=3dfe97a841fe6985357357ef0b93601bfe531bf8 --- libavutil/hwcontext_dxva2.c | 38 ++ 1 file changed, 14 insertions(+), 24 deletions(-) diff --git a/libavutil/hwcontext_dxva2.c b/libavutil/hwcontext_dxva2.c index 40a4a27..02632b7 100644 --- a/libavutil/hwcontext_dxva2.c +++ b/libavutil/hwcontext_dxva2.c @@ -251,19 +251,11 @@ static int dxva2_transfer_data(AVHWFramesContext *ctx, AVFrame *dst, D3DLOCKED_RECT LockedRect; HRESULThr; -int download = !!src->hw_frames_ctx; -int bytes_per_component; +uint8_t *surf_data[4] = { NULL }; +int surf_linesize[4] = { 0 }; +int i; -switch (ctx->sw_format) { -case AV_PIX_FMT_NV12: -bytes_per_component = 1; -break; -case AV_PIX_FMT_P010: -bytes_per_component = 2; -break; -default: -av_assert0(0); -} +int download = !!src->hw_frames_ctx; surface = (IDirect3DSurface9*)(download ? src->data[3] : dst->data[3]); @@ -280,20 +272,18 @@ static int dxva2_transfer_data(AVHWFramesContext *ctx, AVFrame *dst, return AVERROR_UNKNOWN; } +for (i = 0; download ? dst->data[i] : src->data[i]; i++) +surf_linesize[i] = LockedRect.Pitch; + +av_image_fill_pointers(surf_data, ctx->sw_format, surfaceDesc.Height, + (uint8_t*)LockedRect.pBits, surf_linesize); + if (download) { -av_image_copy_plane(dst->data[0], dst->linesize[0], -(uint8_t*)LockedRect.pBits, LockedRect.Pitch, -src->width * bytes_per_component, src->height); -av_image_copy_plane(dst->data[1], dst->linesize[1], -(uint8_t*)LockedRect.pBits + LockedRect.Pitch * surfaceDesc.Height, -LockedRect.Pitch, src->width * bytes_per_component, src->height / 2); +av_image_copy(dst->data, dst->linesize, surf_data, surf_linesize, + ctx->sw_format, src->width, src->height); } else { -av_image_copy_plane((uint8_t*)LockedRect.pBits, LockedRect.Pitch, -dst->data[0], dst->linesize[0], -src->width * bytes_per_component, src->height); -av_image_copy_plane((uint8_t*)LockedRect.pBits + LockedRect.Pitch * surfaceDesc.Height, -LockedRect.Pitch, dst->data[1], dst->linesize[1], -src->width * bytes_per_component, src->height / 2); +av_image_copy(surf_data, surf_linesize, src->data, src->linesize, + ctx->sw_format, src->width, src->height); } IDirect3DSurface9_UnlockRect(surface); == ___ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog
[FFmpeg-cvslog] swscale: add P010 input support
ffmpeg | branch: master | Hendrik Leppkes <h.lepp...@gmail.com> | Tue Dec 8 11:53:54 2015 +0100| [e78e5b735fd559bc7aa3f5a01e9c8d37dc2ec6d8] | committer: Anton Khirnov swscale: add P010 input support Signed-off-by: Anton Khirnov <an...@khirnov.net> > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=e78e5b735fd559bc7aa3f5a01e9c8d37dc2ec6d8 --- libswscale/input.c| 50 +++ libswscale/swscale_unscaled.c | 4 +++- libswscale/utils.c| 2 ++ 3 files changed, 55 insertions(+), 1 deletion(-) diff --git a/libswscale/input.c b/libswscale/input.c index e806bce..9a4fd77 100644 --- a/libswscale/input.c +++ b/libswscale/input.c @@ -496,6 +496,44 @@ static void nv21ToUV_c(uint8_t *dstU, uint8_t *dstV, nvXXtoUV_c(dstV, dstU, src1, width); } +static void p010LEToY_c(uint8_t *dst, const uint8_t *src, int width, uint32_t *unused) +{ +int i; +for (i = 0; i < width; i++) { +AV_WN16(dst + i * 2, AV_RL16(src + i * 2) >> 6); +} +} + +static void p010BEToY_c(uint8_t *dst, const uint8_t *src, int width, uint32_t *unused) +{ +int i; +for (i = 0; i < width; i++) { +AV_WN16(dst + i * 2, AV_RB16(src + i * 2) >> 6); +} +} + +static void p010LEToUV_c(uint8_t *dstU, uint8_t *dstV, + const uint8_t *src1, const uint8_t *src2, + int width, uint32_t *unused) +{ +int i; +for (i = 0; i < width; i++) { +AV_WN16(dstU + i * 2, AV_RL16(src1 + i * 4 + 0) >> 6); +AV_WN16(dstV + i * 2, AV_RL16(src1 + i * 4 + 2) >> 6); +} +} + +static void p010BEToUV_c(uint8_t *dstU, uint8_t *dstV, + const uint8_t *src1, const uint8_t *src2, + int width, uint32_t *unused) +{ +int i; +for (i = 0; i < width; i++) { +AV_WN16(dstU + i * 2, AV_RB16(src1 + i * 4 + 0) >> 6); +AV_WN16(dstV + i * 2, AV_RB16(src1 + i * 4 + 2) >> 6); +} +} + #define input_pixel(pos) (isBE(origin) ? AV_RB16(pos) : AV_RL16(pos)) static void bgr24ToY_c(uint8_t *dst, const uint8_t *src, @@ -813,6 +851,12 @@ av_cold void ff_sws_init_input_funcs(SwsContext *c) c->chrToYV12 = bswap16UV_c; break; #endif +case AV_PIX_FMT_P010LE: +c->chrToYV12 = p010LEToUV_c; +break; +case AV_PIX_FMT_P010BE: +c->chrToYV12 = p010BEToUV_c; +break; } if (c->chrSrcHSubSample) { switch (srcFormat) { @@ -1128,6 +1172,12 @@ av_cold void ff_sws_init_input_funcs(SwsContext *c) case AV_PIX_FMT_BGR48LE: c->lumToYV12 = bgr48LEToY_c; break; +case AV_PIX_FMT_P010LE: +c->lumToYV12 = p010LEToY_c; +break; +case AV_PIX_FMT_P010BE: +c->lumToYV12 = p010BEToY_c; +break; } if (c->alpPixBuf) { switch (srcFormat) { diff --git a/libswscale/swscale_unscaled.c b/libswscale/swscale_unscaled.c index ba0b2ba..0e6be51 100644 --- a/libswscale/swscale_unscaled.c +++ b/libswscale/swscale_unscaled.c @@ -1156,7 +1156,9 @@ void ff_get_unscaled_swscale(SwsContext *c) c->chrDstHSubSample == c->chrSrcHSubSample && c->chrDstVSubSample == c->chrSrcVSubSample && dstFormat != AV_PIX_FMT_NV12 && dstFormat != AV_PIX_FMT_NV21 && - srcFormat != AV_PIX_FMT_NV12 && srcFormat != AV_PIX_FMT_NV21)) + dstFormat != AV_PIX_FMT_P010LE && dstFormat != AV_PIX_FMT_P010BE && + srcFormat != AV_PIX_FMT_NV12 && srcFormat != AV_PIX_FMT_NV21 && + srcFormat != AV_PIX_FMT_P010LE && srcFormat != AV_PIX_FMT_P010BE)) { if (isPacked(c->srcFormat)) c->swscale = packedCopyWrapper; diff --git a/libswscale/utils.c b/libswscale/utils.c index ee309bc..129643a 100644 --- a/libswscale/utils.c +++ b/libswscale/utils.c @@ -185,6 +185,8 @@ static const FormatEntry format_entries[AV_PIX_FMT_NB] = { [AV_PIX_FMT_GBRAP16BE] = { 1, 0 }, [AV_PIX_FMT_XYZ12BE] = { 0, 0, 1 }, [AV_PIX_FMT_XYZ12LE] = { 0, 0, 1 }, +[AV_PIX_FMT_P010LE] = { 1, 0 }, +[AV_PIX_FMT_P010BE] = { 1, 0 }, }; int sws_isSupportedInput(enum AVPixelFormat pix_fmt) ___ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog
[FFmpeg-cvslog] Merge commit 'e78e5b735fd559bc7aa3f5a01e9c8d37dc2ec6d8'
ffmpeg | branch: master | Hendrik Leppkes <h.lepp...@gmail.com> | Mon Nov 14 15:09:31 2016 +0100| [d4509495bfa21e34941e9ee94236c4e71007bf43] | committer: Hendrik Leppkes Merge commit 'e78e5b735fd559bc7aa3f5a01e9c8d37dc2ec6d8' * commit 'e78e5b735fd559bc7aa3f5a01e9c8d37dc2ec6d8': swscale: add P010 input support This commit is a noop, see 2e31434d84bba17610ecc491afb5b372678fd517 Merged-by: Hendrik Leppkes <h.lepp...@gmail.com> > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=d4509495bfa21e34941e9ee94236c4e71007bf43 --- ___ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog
[FFmpeg-cvslog] pixfmt: add P010 pixel format
ffmpeg | branch: master | Hendrik Leppkes <h.lepp...@gmail.com> | Tue Dec 8 11:17:01 2015 +0100| [b7c5f885233a7b8692140c920d9f43220dc830d9] | committer: Anton Khirnov pixfmt: add P010 pixel format P010 is the 10-bit variant of NV12 (planar luma, packed chroma), using two bytes per component to store 10-bit data plus 6-bit zeroes in the LSBs. Signed-off-by: Anton Khirnov <an...@khirnov.net> > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=b7c5f885233a7b8692140c920d9f43220dc830d9 --- doc/APIchanges | 3 +++ libavutil/pixdesc.c | 24 libavutil/pixfmt.h | 4 libavutil/version.h | 2 +- 4 files changed, 32 insertions(+), 1 deletion(-) diff --git a/doc/APIchanges b/doc/APIchanges index 1caa1b7..8b5a335 100644 --- a/doc/APIchanges +++ b/doc/APIchanges @@ -13,6 +13,9 @@ libavutil: 2015-08-28 API changes, most recent first: +2016-xx-xx - xxx - lavu 55.18.0 - pixdesc.h + Add AV_PIX_FMT_P010(LE/BE). + 2016-xx-xx - xxx - lavc 57.24.0 - avcodec.h Decoders now export the frame timestamp as AVFrame.pts. It was previously exported as AVFrame.pkt_pts, which is now deprecated. diff --git a/libavutil/pixdesc.c b/libavutil/pixdesc.c index 6d9e38d..cf2ea9c 100644 --- a/libavutil/pixdesc.c +++ b/libavutil/pixdesc.c @@ -1590,6 +1590,30 @@ static const AVPixFmtDescriptor av_pix_fmt_descriptors[AV_PIX_FMT_NB] = { .name = "cuda", .flags = AV_PIX_FMT_FLAG_HWACCEL, }, +[AV_PIX_FMT_P010LE] = { +.name = "p010le", +.nb_components = 3, +.log2_chroma_w = 1, +.log2_chroma_h = 1, +.comp = { +{ 0, 2, 0, 6, 10, 1, 9, 1 },/* Y */ +{ 1, 4, 0, 6, 10, 3, 9, 1 },/* U */ +{ 1, 4, 2, 6, 10, 3, 9, 3 },/* V */ +}, +.flags = AV_PIX_FMT_FLAG_PLANAR, +}, +[AV_PIX_FMT_P010BE] = { +.name = "p010be", +.nb_components = 3, +.log2_chroma_w = 1, +.log2_chroma_h = 1, +.comp = { +{ 0, 2, 0, 6, 10, 1, 9, 1 },/* Y */ +{ 1, 4, 0, 6, 10, 3, 9, 1 },/* U */ +{ 1, 4, 2, 6, 10, 3, 9, 3 },/* V */ +}, +.flags = AV_PIX_FMT_FLAG_PLANAR | AV_PIX_FMT_FLAG_BE, +}, }; #if FF_API_PLUS1_MINUS1 FF_ENABLE_DEPRECATION_WARNINGS diff --git a/libavutil/pixfmt.h b/libavutil/pixfmt.h index 9a5903b..8a8d624 100644 --- a/libavutil/pixfmt.h +++ b/libavutil/pixfmt.h @@ -227,6 +227,9 @@ enum AVPixelFormat { */ AV_PIX_FMT_CUDA, +AV_PIX_FMT_P010LE, ///< like NV12, with 10bpp per component, data in the high bits, zeros in the low bits, little-endian +AV_PIX_FMT_P010BE, ///< like NV12, with 10bpp per component, data in the high bits, zeros in the low bits, big-endian + 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 }; @@ -282,6 +285,7 @@ enum AVPixelFormat { #define AV_PIX_FMT_XYZ12 AV_PIX_FMT_NE(XYZ12BE, XYZ12LE) #define AV_PIX_FMT_NV20 AV_PIX_FMT_NE(NV20BE, NV20LE) +#define AV_PIX_FMT_P010 AV_PIX_FMT_NE(P010BE, P010LE) /** * Chromaticity coordinates of the source primaries. diff --git a/libavutil/version.h b/libavutil/version.h index e24b30d..6cd42a6 100644 --- a/libavutil/version.h +++ b/libavutil/version.h @@ -54,7 +54,7 @@ */ #define LIBAVUTIL_VERSION_MAJOR 55 -#define LIBAVUTIL_VERSION_MINOR 17 +#define LIBAVUTIL_VERSION_MINOR 18 #define LIBAVUTIL_VERSION_MICRO 0 #define LIBAVUTIL_VERSION_INT AV_VERSION_INT(LIBAVUTIL_VERSION_MAJOR, \ ___ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog
[FFmpeg-cvslog] Merge commit 'b7c5f885233a7b8692140c920d9f43220dc830d9'
ffmpeg | branch: master | Hendrik Leppkes <h.lepp...@gmail.com> | Mon Nov 14 15:08:19 2016 +0100| [8fee823fe8fbd7894dc38912b799066d2c210d4d] | committer: Hendrik Leppkes Merge commit 'b7c5f885233a7b8692140c920d9f43220dc830d9' * commit 'b7c5f885233a7b8692140c920d9f43220dc830d9': pixfmt: add P010 pixel format This commit is a noop, see c2869b4640f0af56e2dd828406d074ef6290fde4 Merged-by: Hendrik Leppkes <h.lepp...@gmail.com> > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=8fee823fe8fbd7894dc38912b799066d2c210d4d --- ___ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog
[FFmpeg-cvslog] Merge commit 'be3e807c8fad1f82766c083073e44396799f155b'
ffmpeg | branch: master | Hendrik Leppkes <h.lepp...@gmail.com> | Mon Nov 14 14:03:47 2016 +0100| [06136275e59c38806b04a1fc9cc92beb82db79b6] | committer: Hendrik Leppkes Merge commit 'be3e807c8fad1f82766c083073e44396799f155b' * commit 'be3e807c8fad1f82766c083073e44396799f155b': oggparseopus: export pre-skip Noop, we already export this information Merged-by: Hendrik Leppkes <h.lepp...@gmail.com> > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=06136275e59c38806b04a1fc9cc92beb82db79b6 --- ___ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog
[FFmpeg-cvslog] Merge commit '029cf99c5166b36f33381cd8ebfa5f1f1f463d1f'
ffmpeg | branch: master | Hendrik Leppkes <h.lepp...@gmail.com> | Mon Nov 14 12:41:32 2016 +0100| [d8ffdefbdce16948c9b3c84df62171a7d58c8253] | committer: Hendrik Leppkes Merge commit '029cf99c5166b36f33381cd8ebfa5f1f1f463d1f' * commit '029cf99c5166b36f33381cd8ebfa5f1f1f463d1f': mov: Save number of stsd elements after stream extradata allocation Mostly noop, see 8b43ee4054af799e388d380b379a13a60849c1b5 Merged-by: Hendrik Leppkes <h.lepp...@gmail.com> > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=d8ffdefbdce16948c9b3c84df62171a7d58c8253 --- libavformat/mov.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/libavformat/mov.c b/libavformat/mov.c index 17d63d6..8d6cc12 100644 --- a/libavformat/mov.c +++ b/libavformat/mov.c @@ -2332,8 +2332,7 @@ static int mov_read_stsd(MOVContext *c, AVIOContext *pb, MOVAtom atom) { AVStream *st; MOVStreamContext *sc; -int ret; -int entries; +int ret, entries; if (c->fc->nb_streams < 1) return 0; @@ -2342,7 +2341,7 @@ static int mov_read_stsd(MOVContext *c, AVIOContext *pb, MOVAtom atom) avio_r8(pb); /* version */ avio_rb24(pb); /* flags */ -entries = avio_rb32(pb); /* entries */ +entries = avio_rb32(pb); if (entries <= 0) { av_log(c->fc, AV_LOG_ERROR, "invalid STSD entries %d\n", entries); == diff --cc libavformat/mov.c index 17d63d6,0cb3271..8d6cc12 --- a/libavformat/mov.c +++ b/libavformat/mov.c @@@ -2342,26 -1892,19 +2341,26 @@@ static int mov_read_stsd(MOVContext *c avio_r8(pb); /* version */ avio_rb24(pb); /* flags */ - entries = avio_rb32(pb); /* entries */ + entries = avio_rb32(pb); +if (entries <= 0) { +av_log(c->fc, AV_LOG_ERROR, "invalid STSD entries %d\n", entries); +return AVERROR_INVALIDDATA; +} + +if (sc->extradata) { +av_log(c->fc, AV_LOG_ERROR, "Duplicate STSD\n"); +return AVERROR_INVALIDDATA; +} /* Prepare space for hosting multiple extradata. */ sc->extradata = av_mallocz_array(entries, sizeof(*sc->extradata)); -if (!sc->extradata) -return AVERROR(ENOMEM); - -sc->stsd_count = entries; -sc->extradata_size = av_mallocz_array(sc->stsd_count, sizeof(sc->extradata_size)); -if (!sc->extradata_size) -return AVERROR(ENOMEM); +sc->extradata_size = av_mallocz_array(entries, sizeof(*sc->extradata_size)); +if (!sc->extradata_size || !sc->extradata) { +ret = AVERROR(ENOMEM); +goto fail; +} -ret = ff_mov_read_stsd_entries(c, pb, sc->stsd_count); +ret = ff_mov_read_stsd_entries(c, pb, entries); if (ret < 0) return ret; ___ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog
[FFmpeg-cvslog] Merge commit '9f732e4c996243c1e57c2bbbec6c8b94c37a7a22'
ffmpeg | branch: master | Hendrik Leppkes <h.lepp...@gmail.com> | Mon Nov 14 12:30:35 2016 +0100| [bebab21176c1f052f748cfb2384cc01e0bdb13f4] | committer: Hendrik Leppkes Merge commit '9f732e4c996243c1e57c2bbbec6c8b94c37a7a22' * commit '9f732e4c996243c1e57c2bbbec6c8b94c37a7a22': tiffenc: Check av_pix_fmt_desc_get() return value Merged-by: Hendrik Leppkes <h.lepp...@gmail.com> > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=bebab21176c1f052f748cfb2384cc01e0bdb13f4 --- libavcodec/tiffenc.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/libavcodec/tiffenc.c b/libavcodec/tiffenc.c index 3d37d2e..e575c4c 100644 --- a/libavcodec/tiffenc.c +++ b/libavcodec/tiffenc.c @@ -265,6 +265,9 @@ static int encode_frame(AVCodecContext *avctx, AVPacket *pkt, s->subsampling[0] = 1; s->subsampling[1] = 1; +if (!desc) +return AVERROR(EINVAL); + avctx->bits_per_coded_sample = s->bpp = av_get_bits_per_pixel(desc); s->bpp_tab_size = desc->nb_components; == diff --cc libavcodec/tiffenc.c index 3d37d2e,24312f0..e575c4c --- a/libavcodec/tiffenc.c +++ b/libavcodec/tiffenc.c @@@ -265,32 -246,37 +265,35 @@@ static int encode_frame(AVCodecContext s->subsampling[0] = 1; s->subsampling[1] = 1; ++if (!desc) ++return AVERROR(EINVAL); ++ +avctx->bits_per_coded_sample = +s->bpp = av_get_bits_per_pixel(desc); +s->bpp_tab_size = desc->nb_components; + switch (avctx->pix_fmt) { case AV_PIX_FMT_RGBA64LE: -case AV_PIX_FMT_RGB48LE: -case AV_PIX_FMT_GRAY16LE: case AV_PIX_FMT_RGBA: +alpha = 1; +case AV_PIX_FMT_RGB48LE: case AV_PIX_FMT_RGB24: -case AV_PIX_FMT_GRAY8: -case AV_PIX_FMT_PAL8: -pfd = av_pix_fmt_desc_get(avctx->pix_fmt); -if (!pfd) -return AVERROR_BUG; -s->bpp = av_get_bits_per_pixel(pfd); -if (pfd->flags & AV_PIX_FMT_FLAG_PAL) -s->photometric_interpretation = TIFF_PHOTOMETRIC_PALETTE; -else if (pfd->flags & AV_PIX_FMT_FLAG_RGB) -s->photometric_interpretation = TIFF_PHOTOMETRIC_RGB; -else -s->photometric_interpretation = TIFF_PHOTOMETRIC_BLACK_IS_ZERO; -s->bpp_tab_size = pfd->nb_components; -for (i = 0; i < s->bpp_tab_size; i++) -bpp_tab[i] = s->bpp / s->bpp_tab_size; +s->photometric_interpretation = TIFF_PHOTOMETRIC_RGB; break; +case AV_PIX_FMT_GRAY8: +avctx->bits_per_coded_sample = 0x28; +case AV_PIX_FMT_GRAY8A: +case AV_PIX_FMT_YA16LE: +alpha = avctx->pix_fmt == AV_PIX_FMT_GRAY8A || avctx->pix_fmt == AV_PIX_FMT_YA16LE; +case AV_PIX_FMT_GRAY16LE: case AV_PIX_FMT_MONOBLACK: -s->bpp= 1; s->photometric_interpretation = TIFF_PHOTOMETRIC_BLACK_IS_ZERO; -s->bpp_tab_size = 0; +break; +case AV_PIX_FMT_PAL8: +s->photometric_interpretation = TIFF_PHOTOMETRIC_PALETTE; break; case AV_PIX_FMT_MONOWHITE: -s->bpp= 1; s->photometric_interpretation = TIFF_PHOTOMETRIC_WHITE_IS_ZERO; -s->bpp_tab_size = 0; break; case AV_PIX_FMT_YUV420P: case AV_PIX_FMT_YUV422P: ___ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog
[FFmpeg-cvslog] Merge commit '6c445990e64124ad64c79423dfd3764520648c89'
ffmpeg | branch: master | Hendrik Leppkes <h.lepp...@gmail.com> | Mon Nov 14 12:32:08 2016 +0100| [985bc8b49683761e5014a22146d4346c951680ad] | committer: Hendrik Leppkes Merge commit '6c445990e64124ad64c79423dfd3764520648c89' * commit '6c445990e64124ad64c79423dfd3764520648c89': tiffenc: Check zlib support for deflate option during initialization Merged-by: Hendrik Leppkes <h.lepp...@gmail.com> > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=985bc8b49683761e5014a22146d4346c951680ad --- libavcodec/tiffenc.c | 11 +-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/libavcodec/tiffenc.c b/libavcodec/tiffenc.c index e575c4c..f59816e 100644 --- a/libavcodec/tiffenc.c +++ b/libavcodec/tiffenc.c @@ -524,6 +524,15 @@ fail: static av_cold int encode_init(AVCodecContext *avctx) { TiffEncoderContext *s = avctx->priv_data; + +#if !CONFIG_ZLIB +if (s->compr == TIFF_DEFLATE) { +av_log(avctx, AV_LOG_ERROR, + "Deflate compression needs zlib compiled in\n"); +return AVERROR(ENOSYS); +} +#endif + #if FF_API_CODED_FRAME FF_DISABLE_DEPRECATION_WARNINGS avctx->coded_frame->pict_type = AV_PICTURE_TYPE_I; @@ -554,9 +563,7 @@ static const AVOption options[] = { { "packbits", NULL, 0, AV_OPT_TYPE_CONST, { .i64 = TIFF_PACKBITS }, 0,0,VE, "compression_algo" }, { "raw", NULL, 0, AV_OPT_TYPE_CONST, { .i64 = TIFF_RAW }, 0,0,VE, "compression_algo" }, { "lzw", NULL, 0, AV_OPT_TYPE_CONST, { .i64 = TIFF_LZW }, 0,0,VE, "compression_algo" }, -#if CONFIG_ZLIB { "deflate", NULL, 0, AV_OPT_TYPE_CONST, { .i64 = TIFF_DEFLATE }, 0,0,VE, "compression_algo" }, -#endif { NULL }, }; == diff --cc libavcodec/tiffenc.c index e575c4c,8791c54..f59816e --- a/libavcodec/tiffenc.c +++ b/libavcodec/tiffenc.c @@@ -523,7 -492,16 +523,16 @@@ fail static av_cold int encode_init(AVCodecContext *avctx) { -#if !CONFIG_ZLIB TiffEncoderContext *s = avctx->priv_data; + ++#if !CONFIG_ZLIB + if (s->compr == TIFF_DEFLATE) { + av_log(avctx, AV_LOG_ERROR, +"Deflate compression needs zlib compiled in\n"); + return AVERROR(ENOSYS); + } + #endif + #if FF_API_CODED_FRAME FF_DISABLE_DEPRECATION_WARNINGS avctx->coded_frame->pict_type = AV_PICTURE_TYPE_I; ___ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog
[FFmpeg-cvslog] Merge commit 'd8f3b0fb584677d4882e3a2d7c28f8b15c7319f5'
ffmpeg | branch: master | Hendrik Leppkes <h.lepp...@gmail.com> | Mon Nov 14 12:16:32 2016 +0100| [bbd0ebfd835761d1abbe030a8a7866d88b2a8777] | committer: Hendrik Leppkes Merge commit 'd8f3b0fb584677d4882e3a2d7c28f8b15c7319f5' * commit 'd8f3b0fb584677d4882e3a2d7c28f8b15c7319f5': targaenc: Move size check to initialization function Merged-by: Hendrik Leppkes <h.lepp...@gmail.com> > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=bbd0ebfd835761d1abbe030a8a7866d88b2a8777 --- libavcodec/targaenc.c | 9 + 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/libavcodec/targaenc.c b/libavcodec/targaenc.c index 66bc55c..79030a0 100644 --- a/libavcodec/targaenc.c +++ b/libavcodec/targaenc.c @@ -89,10 +89,6 @@ static int targa_encode_frame(AVCodecContext *avctx, AVPacket *pkt, int bpp, picsize, datasize = -1, ret, i; uint8_t *out; -if(avctx->width > 0x || avctx->height > 0x) { -av_log(avctx, AV_LOG_ERROR, "image dimensions too large\n"); -return AVERROR(EINVAL); -} picsize = av_image_get_buffer_size(avctx->pix_fmt, avctx->width, avctx->height, 1); if ((ret = ff_alloc_packet2(avctx, pkt, picsize + 45, 0)) < 0) @@ -190,6 +186,11 @@ FF_ENABLE_DEPRECATION_WARNINGS static av_cold int targa_encode_init(AVCodecContext *avctx) { +if (avctx->width > 0x || avctx->height > 0x) { +av_log(avctx, AV_LOG_ERROR, "image dimensions too large\n"); +return AVERROR(EINVAL); +} + #if FF_API_CODED_FRAME FF_DISABLE_DEPRECATION_WARNINGS avctx->coded_frame->key_frame = 1; == diff --cc libavcodec/targaenc.c index 66bc55c,f0cee38..79030a0 --- a/libavcodec/targaenc.c +++ b/libavcodec/targaenc.c @@@ -86,17 -86,15 +86,13 @@@ static int targa_encode_frame(AVCodecCo const AVFrame *p, int *got_packet) { TargaContext *s = avctx->priv_data; -int bpp, picsize, datasize = -1, ret; +int bpp, picsize, datasize = -1, ret, i; uint8_t *out; - if(avctx->width > 0x || avctx->height > 0x) { - av_log(avctx, AV_LOG_ERROR, "image dimensions too large\n"); - return AVERROR(EINVAL); - } picsize = av_image_get_buffer_size(avctx->pix_fmt, avctx->width, avctx->height, 1); -if ((ret = ff_alloc_packet(pkt, picsize + 45)) < 0) { -av_log(avctx, AV_LOG_ERROR, "encoded frame too large\n"); +if ((ret = ff_alloc_packet2(avctx, pkt, picsize + 45, 0)) < 0) return ret; -} /* zero out the header and only set applicable fields */ memset(pkt->data, 0, 12); ___ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog
[FFmpeg-cvslog] Merge commit 'eeb6849cedac099d41feb482da581f4059c63ca7'
ffmpeg | branch: master | Hendrik Leppkes <h.lepp...@gmail.com> | Mon Nov 14 12:03:00 2016 +0100| [25004c7e6eaa91c749763c1dabb41c4fc9c692e2] | committer: Hendrik Leppkes Merge commit 'eeb6849cedac099d41feb482da581f4059c63ca7' * commit 'eeb6849cedac099d41feb482da581f4059c63ca7': rle: K formatting cosmetics Merged-by: Hendrik Leppkes <h.lepp...@gmail.com> > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=25004c7e6eaa91c749763c1dabb41c4fc9c692e2 --- libavcodec/rle.c | 34 -- libavcodec/rle.h | 9 + 2 files changed, 25 insertions(+), 18 deletions(-) diff --git a/libavcodec/rle.c b/libavcodec/rle.c index 7924ea7..792bc05 100644 --- a/libavcodec/rle.c +++ b/libavcodec/rle.c @@ -18,26 +18,29 @@ * License along with FFmpeg; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ + +#include "libavutil/common.h" + #include "avcodec.h" #include "rle.h" -#include "libavutil/common.h" int ff_rle_count_pixels(const uint8_t *start, int len, int bpp, int same) { const uint8_t *pos; int count = 1; -for(pos = start + bpp; count < FFMIN(127, len); pos += bpp, count ++) { -if(same != !memcmp(pos-bpp, pos, bpp)) { -if(!same) { -/* if bpp == 1, then 0 1 1 0 is more efficiently encoded as a single - * raw block of pixels. for larger bpp, RLE is as good or better */ -if(bpp == 1 && count + 1 < FFMIN(127, len) && *pos != *(pos+1)) +for (pos = start + bpp; count < FFMIN(127, len); pos += bpp, count++) { +if (same != !memcmp(pos - bpp, pos, bpp)) { +if (!same) { +/* if bpp == 1, then 0 1 1 0 is more efficiently encoded as a + * single raw block of pixels. For larger bpp, RLE is as good + * or better */ +if (bpp == 1 && count + 1 < FFMIN(127, len) && *pos != *(pos + 1)) continue; /* if RLE can encode the next block better than as a raw block, * back up and leave _all_ the identical pixels for RLE */ -count --; +count--; } break; } @@ -46,25 +49,28 @@ int ff_rle_count_pixels(const uint8_t *start, int len, int bpp, int same) return count; } -int ff_rle_encode(uint8_t *outbuf, int out_size, const uint8_t *ptr , int bpp, int w, - int add_rep, int xor_rep, int add_raw, int xor_raw) +int ff_rle_encode(uint8_t *outbuf, int out_size, const uint8_t *ptr, int bpp, + int w, int add_rep, int xor_rep, int add_raw, int xor_raw) { int count, x; uint8_t *out = outbuf; -for(x = 0; x < w; x += count) { +for (x = 0; x < w; x += count) { /* see if we can encode the next set of pixels with RLE */ if ((count = ff_rle_count_pixels(ptr, w - x, bpp, 1)) > 1) { -if(out + bpp + 1 > outbuf + out_size) return -1; +if (out + bpp + 1 > outbuf + out_size) +return -1; + *out++ = (count ^ xor_rep) + add_rep; memcpy(out, ptr, bpp); out += bpp; } else { /* fall back on uncompressed */ count = ff_rle_count_pixels(ptr, w - x, bpp, 0); -if(out + bpp*count >= outbuf + out_size) return -1; -*out++ = (count ^ xor_raw) + add_raw; +if (out + bpp * count >= outbuf + out_size) +return -1; +*out++ = (count ^ xor_raw) + add_raw; memcpy(out, ptr, bpp * count); out += bpp * count; } diff --git a/libavcodec/rle.h b/libavcodec/rle.h index cb51624..a92edf7 100644 --- a/libavcodec/rle.h +++ b/libavcodec/rle.h @@ -35,8 +35,9 @@ int ff_rle_count_pixels(const uint8_t *start, int len, int bpp, int same); /** - * RLE compress the row, with maximum size of out_size. Value before repeated bytes is (count ^ xor_rep) + add_rep. - * Value before raw bytes is (count ^ xor_raw) + add_raw. + * RLE compress the row, with maximum size of out_size. + * Value before repeated bytes is (count ^ xor_rep) + add_rep. + * Value before raw bytes is (count ^ xor_raw) + add_raw. * @param outbuf Output buffer * @param out_size Maximum output size * @param inbuf Input buffer @@ -44,7 +45,7 @@ int ff_rle_count_pixels(const uint8_t *start, int len, int bpp, int same); * @param w Image width * @return Size of output in bytes, or -1 if larger than out_size */ -int ff_rle_encode(uint8_t *outbuf, int out_size, const uint8_t *inbuf, int bpp, int w, - int add_rep, int xor_rep, int add_raw, int xor_raw); +int ff_rle_encode(uint8_t *outbuf, int out_size, const uint8_t *i
[FFmpeg-cvslog] Merge commit '326d9116936ab61d13ac4142b49c7337daf7c4c0'
ffmpeg | branch: master | Hendrik Leppkes <h.lepp...@gmail.com> | Mon Nov 14 11:50:03 2016 +0100| [444e65299ba5cbf390439e27ce2cb91dff0e5aa7] | committer: Hendrik Leppkes Merge commit '326d9116936ab61d13ac4142b49c7337daf7c4c0' * commit '326d9116936ab61d13ac4142b49c7337daf7c4c0': build: Drop unnecessary libavcodec <-> libavformat object dependencies Merged-by: Hendrik Leppkes <h.lepp...@gmail.com> > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=444e65299ba5cbf390439e27ce2cb91dff0e5aa7 --- libavcodec/Makefile | 19 +++ 1 file changed, 3 insertions(+), 16 deletions(-) diff --git a/libavcodec/Makefile b/libavcodec/Makefile index 8c18906..82f7fa2 100644 --- a/libavcodec/Makefile +++ b/libavcodec/Makefile @@ -810,33 +810,20 @@ OBJS-$(CONFIG_ISO_MEDIA) += mpeg4audio.o mpegaudiodata.o OBJS-$(CONFIG_ADTS_MUXER) += mpeg4audio.o OBJS-$(CONFIG_CAF_DEMUXER) += ac3tab.o OBJS-$(CONFIG_DNXHD_DEMUXER) += dnxhddata.o -OBJS-$(CONFIG_FLAC_DEMUXER)+= flac.o flacdata.o vorbis_data.o -OBJS-$(CONFIG_FLAC_MUXER) += flac.o flacdata.o vorbis_data.o OBJS-$(CONFIG_FLV_DEMUXER) += mpeg4audio.o -OBJS-$(CONFIG_GXF_DEMUXER) += mpeg12data.o -OBJS-$(CONFIG_IFF_DEMUXER) += iff.o OBJS-$(CONFIG_LATM_MUXER) += mpeg4audio.o -OBJS-$(CONFIG_MATROSKA_AUDIO_MUXER)+= mpeg4audio.o vorbis_data.o\ - flac.o flacdata.o -OBJS-$(CONFIG_MATROSKA_MUXER) += flac.o flacdata.o vorbis_data.o +OBJS-$(CONFIG_MATROSKA_AUDIO_MUXER)+= mpeg4audio.o +OBJS-$(CONFIG_MATROSKA_MUXER) += mpeg4audio.o OBJS-$(CONFIG_MOV_DEMUXER) += ac3tab.o OBJS-$(CONFIG_MP3_MUXER) += mpegaudiodata.o mpegaudiodecheader.o -OBJS-$(CONFIG_MPEGTS_MUXER)+= mpeg4audio.o OBJS-$(CONFIG_MXF_MUXER) += dnxhddata.o OBJS-$(CONFIG_NUT_MUXER) += mpegaudiodata.o OBJS-$(CONFIG_NUT_DEMUXER) += mpegaudiodata.o mpeg4audio.o -OBJS-$(CONFIG_OGA_MUXER) += flac.o flacdata.o -OBJS-$(CONFIG_OGG_DEMUXER) += mpeg12data.o \ - dirac.o vorbis_data.o -OBJS-$(CONFIG_OGG_MUXER) += flac.o flacdata.o \ - vorbis_data.o OBJS-$(CONFIG_RTP_MUXER) += mpeg4audio.o OBJS-$(CONFIG_SPDIF_DEMUXER) += aacadtsdec.o mpeg4audio.o OBJS-$(CONFIG_SPDIF_MUXER) += dca.o OBJS-$(CONFIG_TAK_DEMUXER) += tak.o -OBJS-$(CONFIG_WEBM_MUXER) += mpeg4audio.o mpegaudiodata.o \ - flac.o flacdata.o \ - vorbis_data.o +OBJS-$(CONFIG_WEBM_MUXER) += mpeg4audio.o # libavfilter dependencies OBJS-$(CONFIG_ELBG_FILTER) += elbg.o == diff --cc libavcodec/Makefile index 8c18906,8eb7d36..82f7fa2 --- a/libavcodec/Makefile +++ b/libavcodec/Makefile @@@ -809,60 -640,21 +809,47 @@@ OBJS-$(CONFIG_ISO_MEDIA) OBJS-$(CONFIG_ADTS_MUXER) += mpeg4audio.o OBJS-$(CONFIG_CAF_DEMUXER) += ac3tab.o +OBJS-$(CONFIG_DNXHD_DEMUXER) += dnxhddata.o - OBJS-$(CONFIG_FLAC_DEMUXER)+= flac.o flacdata.o vorbis_data.o - OBJS-$(CONFIG_FLAC_MUXER) += flac.o flacdata.o vorbis_data.o OBJS-$(CONFIG_FLV_DEMUXER) += mpeg4audio.o - OBJS-$(CONFIG_GXF_DEMUXER) += mpeg12data.o - OBJS-$(CONFIG_IFF_DEMUXER) += iff.o OBJS-$(CONFIG_LATM_MUXER) += mpeg4audio.o - OBJS-$(CONFIG_MATROSKA_AUDIO_MUXER)+= mpeg4audio.o vorbis_data.o\ - flac.o flacdata.o - OBJS-$(CONFIG_MATROSKA_MUXER) += flac.o flacdata.o vorbis_data.o + OBJS-$(CONFIG_MATROSKA_AUDIO_MUXER)+= mpeg4audio.o + OBJS-$(CONFIG_MATROSKA_MUXER) += mpeg4audio.o OBJS-$(CONFIG_MOV_DEMUXER) += ac3tab.o OBJS-$(CONFIG_MP3_MUXER) += mpegaudiodata.o mpegaudiodecheader.o - OBJS-$(CONFIG_MPEGTS_MUXER)+= mpeg4audio.o +OBJS-$(CONFIG_MXF_MUXER) += dnxhddata.o OBJS-$(CONFIG_NUT_MUXER) += mpegaudiodata.o +OBJS-$(CONFIG_NUT_DEMUXER) += mpegaudiodata.o mpeg4audio.o - OBJS-$(CONFIG_OGA_MUXER) += flac.o flacdata.o - OBJS-$(CONFIG_OGG_DEMUXER) += mpeg12data.o \ - dirac.o vorbis_data.o - OBJS-$(CONFIG_OGG_MUXER) += flac.o flacdata.o \ - vorbis_data.o +OBJS-$(CONFIG_RTP_MUXER) += mpeg4audio.o OBJS-$(CONFIG_SPDIF_DEMUXER) += aacadtsdec.o mpeg4audio.o OBJS-$(CONFIG_SPDIF_MUXER) += dca.o OBJS-$(CONFIG_TAK_DEMUXER) += tak.o - OBJ
[FFmpeg-cvslog] Merge commit 'e72d6fa08a3c1876109149401753a8d2c736d418'
ffmpeg | branch: master | Hendrik Leppkes <h.lepp...@gmail.com> | Mon Nov 14 11:19:25 2016 +0100| [a0bc6b51d4f6d01eb4bcaec5489ca67037687a77] | committer: Hendrik Leppkes Merge commit 'e72d6fa08a3c1876109149401753a8d2c736d418' * commit 'e72d6fa08a3c1876109149401753a8d2c736d418': build: Move MP2 muxer declaration away from MP3 muxer code Merged-by: Hendrik Leppkes <h.lepp...@gmail.com> > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=a0bc6b51d4f6d01eb4bcaec5489ca67037687a77 --- libavcodec/Makefile | 1 - libavformat/Makefile | 2 +- libavformat/mp3enc.c | 16 libavformat/rawenc.c | 13 + 4 files changed, 14 insertions(+), 18 deletions(-) diff --git a/libavcodec/Makefile b/libavcodec/Makefile index 66ef2ac..8c18906 100644 --- a/libavcodec/Makefile +++ b/libavcodec/Makefile @@ -820,7 +820,6 @@ OBJS-$(CONFIG_MATROSKA_AUDIO_MUXER)+= mpeg4audio.o vorbis_data.o\ flac.o flacdata.o OBJS-$(CONFIG_MATROSKA_MUXER) += flac.o flacdata.o vorbis_data.o OBJS-$(CONFIG_MOV_DEMUXER) += ac3tab.o -OBJS-$(CONFIG_MP2_MUXER) += mpegaudiodata.o mpegaudiodecheader.o OBJS-$(CONFIG_MP3_MUXER) += mpegaudiodata.o mpegaudiodecheader.o OBJS-$(CONFIG_MPEGTS_MUXER)+= mpeg4audio.o OBJS-$(CONFIG_MXF_MUXER) += dnxhddata.o diff --git a/libavformat/Makefile b/libavformat/Makefile index e6bfc42..5ee0deb 100644 --- a/libavformat/Makefile +++ b/libavformat/Makefile @@ -285,7 +285,7 @@ OBJS-$(CONFIG_MOV_DEMUXER) += mov.o mov_chan.o replaygain.o OBJS-$(CONFIG_MOV_MUXER) += movenc.o avc.o hevc.o vpcc.o \ movenchint.o mov_chan.o rtp.o \ movenccenc.o rawutils.o -OBJS-$(CONFIG_MP2_MUXER) += mp3enc.o rawenc.o id3v2enc.o +OBJS-$(CONFIG_MP2_MUXER) += rawenc.o OBJS-$(CONFIG_MP3_DEMUXER) += mp3dec.o replaygain.o OBJS-$(CONFIG_MP3_MUXER) += mp3enc.o rawenc.o id3v2enc.o OBJS-$(CONFIG_MPC_DEMUXER) += mpc.o apetag.o img2.o diff --git a/libavformat/mp3enc.c b/libavformat/mp3enc.c index 4c97fa1..49f3742 100644 --- a/libavformat/mp3enc.c +++ b/libavformat/mp3enc.c @@ -490,21 +490,6 @@ static int query_codec(enum AVCodecID id, int std_compliance) return -1; } -#if CONFIG_MP2_MUXER -AVOutputFormat ff_mp2_muxer = { -.name = "mp2", -.long_name = NULL_IF_CONFIG_SMALL("MP2 (MPEG audio layer 2)"), -.mime_type = "audio/mpeg", -.extensions= "mp2,m2a,mpa", -.audio_codec = AV_CODEC_ID_MP2, -.video_codec = AV_CODEC_ID_NONE, -.write_packet = ff_raw_write_packet, -.flags = AVFMT_NOTIMESTAMPS, -}; -#endif - -#if CONFIG_MP3_MUXER - static const AVOption options[] = { { "id3v2_version", "Select ID3v2 version to write. Currently 3 and 4 are supported.", offsetof(MP3Context, id3v2_version), AV_OPT_TYPE_INT, {.i64 = 4}, 0, 4, AV_OPT_FLAG_ENCODING_PARAM}, @@ -652,4 +637,3 @@ AVOutputFormat ff_mp3_muxer = { .flags = AVFMT_NOTIMESTAMPS, .priv_class= _muxer_class, }; -#endif diff --git a/libavformat/rawenc.c b/libavformat/rawenc.c index 730e99a..0edcd1c 100644 --- a/libavformat/rawenc.c +++ b/libavformat/rawenc.c @@ -337,6 +337,19 @@ AVOutputFormat ff_mlp_muxer = { }; #endif +#if CONFIG_MP2_MUXER +AVOutputFormat ff_mp2_muxer = { +.name = "mp2", +.long_name = NULL_IF_CONFIG_SMALL("MP2 (MPEG audio layer 2)"), +.mime_type = "audio/mpeg", +.extensions= "mp2,m2a,mpa", +.audio_codec = AV_CODEC_ID_MP2, +.video_codec = AV_CODEC_ID_NONE, +.write_packet = ff_raw_write_packet, +.flags = AVFMT_NOTIMESTAMPS, +}; +#endif + #if CONFIG_MPEG1VIDEO_MUXER AVOutputFormat ff_mpeg1video_muxer = { .name = "mpeg1video", == diff --cc libavcodec/Makefile index 66ef2ac,09b16e7..8c18906 --- a/libavcodec/Makefile +++ b/libavcodec/Makefile @@@ -816,21 -645,16 +816,20 @@@ OBJS-$(CONFIG_FLV_DEMUXER) OBJS-$(CONFIG_GXF_DEMUXER) += mpeg12data.o OBJS-$(CONFIG_IFF_DEMUXER) += iff.o OBJS-$(CONFIG_LATM_MUXER) += mpeg4audio.o -OBJS-$(CONFIG_MATROSKA_AUDIO_MUXER)+= mpeg4audio.o \ +OBJS-$(CONFIG_MATROSKA_AUDIO_MUXER)+= mpeg4audio.o vorbis_data.o\ flac.o flacdata.o -OBJS-$(CONFIG_MATROSKA_MUXER) += flac.o flacdata.o +OBJS-$(CONFIG_MATROSKA_MUXER) += flac.o flacdata.o vorbis_data.o OBJS-$(CONFIG_MOV_DEMUXER)
[FFmpeg-cvslog] Merge commit '67cb2c0f73ec08bdcecd675c1ffe25c3a5b26ef2'
ffmpeg | branch: master | Hendrik Leppkes <h.lepp...@gmail.com> | Mon Nov 14 10:50:50 2016 +0100| [cd70ffaac8b74d88ed1460e10c7e9c02d067e3ca] | committer: Hendrik Leppkes Merge commit '67cb2c0f73ec08bdcecd675c1ffe25c3a5b26ef2' * commit '67cb2c0f73ec08bdcecd675c1ffe25c3a5b26ef2': checkasm: hevc: Iterate over features first, then over bitdepths Noop, we don't have these checkasm tests. Merged-by: Hendrik Leppkes <h.lepp...@gmail.com> > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=cd70ffaac8b74d88ed1460e10c7e9c02d067e3ca --- ___ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog
[FFmpeg-cvslog] Merge commit 'fe27792fd779ac4cdd5e57be5f6f488483c307b2'
ffmpeg | branch: master | Hendrik Leppkes <h.lepp...@gmail.com> | Mon Nov 14 10:42:36 2016 +0100| [9b4cc0f35c8123ce9ff505eebb5f3f261dff0bf8] | committer: Hendrik Leppkes Merge commit 'fe27792fd779ac4cdd5e57be5f6f488483c307b2' * commit 'fe27792fd779ac4cdd5e57be5f6f488483c307b2': build: Move ff_mpeg12_frame_rate_tab to a separate file Merged-by: Hendrik Leppkes <h.lepp...@gmail.com> > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=9b4cc0f35c8123ce9ff505eebb5f3f261dff0bf8 --- libavcodec/Makefile | 6 +++--- libavcodec/mpeg12data.c | 20 libavcodec/mpeg12framerate.c | 39 +++ 3 files changed, 42 insertions(+), 23 deletions(-) diff --git a/libavcodec/Makefile b/libavcodec/Makefile index 4aa0787..66ef2ac 100644 --- a/libavcodec/Makefile +++ b/libavcodec/Makefile @@ -37,6 +37,7 @@ OBJS = allcodecs.o \ jni.o\ mathtables.o \ mediacodec.o \ + mpeg12framerate.o\ options.o\ parser.o \ profiles.o \ @@ -217,7 +218,7 @@ OBJS-$(CONFIG_BMV_VIDEO_DECODER) += bmvvideo.o OBJS-$(CONFIG_BRENDER_PIX_DECODER) += brenderpix.o OBJS-$(CONFIG_C93_DECODER) += c93.o OBJS-$(CONFIG_CAVS_DECODER)+= cavs.o cavsdec.o cavsdsp.o \ - cavsdata.o mpeg12data.o + cavsdata.o OBJS-$(CONFIG_CCAPTION_DECODER)+= ccaption_dec.o OBJS-$(CONFIG_CDGRAPHICS_DECODER) += cdgraphics.o OBJS-$(CONFIG_CDXL_DECODER)+= cdxl.o @@ -239,8 +240,7 @@ OBJS-$(CONFIG_DCA_DECODER) += dcadec.o dca.o dcadata.o dcahuff.o \ OBJS-$(CONFIG_DCA_ENCODER) += dcaenc.o dca.o dcadata.o OBJS-$(CONFIG_DDS_DECODER) += dds.o OBJS-$(CONFIG_DIRAC_DECODER) += diracdec.o dirac.o diracdsp.o diractab.o \ - dirac_arith.o mpeg12data.o dirac_dwt.o \ - dirac_vlc.o + dirac_arith.o dirac_dwt.o dirac_vlc.o OBJS-$(CONFIG_DFA_DECODER) += dfa.o OBJS-$(CONFIG_DNXHD_DECODER) += dnxhddec.o dnxhddata.o OBJS-$(CONFIG_DNXHD_ENCODER) += dnxhdenc.o dnxhddata.o diff --git a/libavcodec/mpeg12data.c b/libavcodec/mpeg12data.c index 416bbb8..4da96d7 100644 --- a/libavcodec/mpeg12data.c +++ b/libavcodec/mpeg12data.c @@ -305,26 +305,6 @@ const uint8_t ff_mpeg12_mbMotionVectorTable[17][2] = { { 0xc, 10 }, }; -const AVRational ff_mpeg12_frame_rate_tab[16] = { -{0,0}, -{24000, 1001}, -{ 24,1}, -{ 25,1}, -{3, 1001}, -{ 30,1}, -{ 50,1}, -{6, 1001}, -{ 60,1}, - // Xing's 15fps: (9) -{ 15,1}, - // libmpeg3's "Unofficial economy rates": (10-13) -{5,1}, -{ 10,1}, -{ 12,1}, -{ 15,1}, -{0,0}, -}; - const AVRational ff_mpeg2_frame_rate_tab[] = { { 1, 1}, { 2, 1}, diff --git a/libavcodec/mpeg12framerate.c b/libavcodec/mpeg12framerate.c new file mode 100644 index 000..094cd18 --- /dev/null +++ b/libavcodec/mpeg12framerate.c @@ -0,0 +1,39 @@ +/* + * 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 + */ + +#include "libavutil/rational.h" + +const AVRational ff_mpeg12_frame_rate_tab[16] = { +{0,0}, +{24000, 1001}, +{ 24,1}, +{ 25,1}, +{3, 1001}, +{ 30,1}, +{ 50,1}, +{6, 1001}, +{ 60,1}, + // Xing's 15fps: (9) +{ 15,1}, + // libmpeg3's "Unofficial economy rates": (10-13) +{5,1}, +{ 10,1}, +{ 12,
[FFmpeg-cvslog] Merge commit '8c929037ec75fbe9f367e0a31ee34839e92de481'
ffmpeg | branch: master | Hendrik Leppkes <h.lepp...@gmail.com> | Mon Nov 14 10:09:44 2016 +0100| [575e8d11f1ebba9f3d9076862b099b7f94e4eb4a] | committer: Hendrik Leppkes Merge commit '8c929037ec75fbe9f367e0a31ee34839e92de481' * commit '8c929037ec75fbe9f367e0a31ee34839e92de481': build: Add a new component for H.264 parsing code Merged-by: Hendrik Leppkes <h.lepp...@gmail.com> > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=575e8d11f1ebba9f3d9076862b099b7f94e4eb4a --- configure | 7 --- libavcodec/Makefile | 12 +--- 2 files changed, 9 insertions(+), 10 deletions(-) diff --git a/configure b/configure index c00c591..ceaf115 100755 --- a/configure +++ b/configure @@ -2056,6 +2056,7 @@ CONFIG_EXTRA=" h263dsp h264chroma h264dsp +h264parse h264pred h264qpel hpeldsp @@ -2381,7 +2382,7 @@ h263_encoder_select="aandcttables h263dsp mpegvideoenc" h263i_decoder_select="h263_decoder" h263p_decoder_select="h263_decoder" h263p_encoder_select="h263_encoder" -h264_decoder_select="cabac golomb h264chroma h264dsp h264pred h264qpel videodsp" +h264_decoder_select="cabac golomb h264chroma h264dsp h264parse h264pred h264qpel videodsp" h264_decoder_suggest="error_resilience" hap_decoder_select="snappy texturedsp" hap_encoder_deps="libsnappy" @@ -2477,7 +2478,7 @@ sonic_ls_encoder_select="golomb rangecoder" sp5x_decoder_select="mjpeg_decoder" svq1_decoder_select="hpeldsp" svq1_encoder_select="aandcttables hpeldsp me_cmp mpegvideoenc" -svq3_decoder_select="golomb h264dsp h264pred hpeldsp tpeldsp videodsp" +svq3_decoder_select="golomb h264dsp h264parse h264pred hpeldsp tpeldsp videodsp" svq3_decoder_suggest="zlib" tak_decoder_select="audiodsp" tdsc_decoder_select="zlib mjpeg_decoder" @@ -2734,7 +2735,7 @@ vp9_cuvid_decoder_deps="cuda cuvid" vp9_cuvid_decoder_select="vp9_cuvid_hwaccel" # parsers -h264_parser_select="golomb h264dsp" +h264_parser_select="golomb h264dsp h264parse" hevc_parser_select="golomb" mpegvideo_parser_select="mpegvideo" mpeg4video_parser_select="h263dsp mpegvideo qpeldsp" diff --git a/libavcodec/Makefile b/libavcodec/Makefile index 5fdc97f..4aa0787 100644 --- a/libavcodec/Makefile +++ b/libavcodec/Makefile @@ -73,6 +73,7 @@ OBJS-$(CONFIG_GOLOMB) += golomb.o OBJS-$(CONFIG_H263DSP) += h263dsp.o OBJS-$(CONFIG_H264CHROMA) += h264chroma.o OBJS-$(CONFIG_H264DSP) += h264dsp.o h264idct.o +OBJS-$(CONFIG_H264PARSE) += h264_parse.o h2645_parse.o h264_ps.o OBJS-$(CONFIG_H264PRED)+= h264pred.o OBJS-$(CONFIG_H264QPEL)+= h264qpel.o OBJS-$(CONFIG_HPELDSP) += hpeldsp.o @@ -311,10 +312,9 @@ OBJS-$(CONFIG_H263_ENCODER)+= mpeg4videoenc.o mpeg4video.o \ h263.o ituh263enc.o flvenc.o h263data.o OBJS-$(CONFIG_H264_DECODER)+= h264dec.o h264_cabac.o h264_cavlc.o \ h264_direct.o h264_loopfilter.o \ - h264_mb.o h264_picture.o h264_ps.o \ + h264_mb.o h264_picture.o \ h264_refs.o h264_sei.o \ - h264_slice.o h264data.o h264_parse.o \ - h2645_parse.o + h264_slice.o h264data.o OBJS-$(CONFIG_H264_CUVID_DECODER) += cuvid.o OBJS-$(CONFIG_H264_MEDIACODEC_DECODER) += mediacodecdec.o OBJS-$(CONFIG_H264_MMAL_DECODER) += mmaldec.o @@ -534,8 +534,7 @@ OBJS-$(CONFIG_SUNRAST_ENCODER) += sunrastenc.o OBJS-$(CONFIG_SVQ1_DECODER)+= svq1dec.o svq1.o svq13.o h263data.o OBJS-$(CONFIG_SVQ1_ENCODER)+= svq1enc.o svq1.o h263data.o \ h263.o ituh263enc.o -OBJS-$(CONFIG_SVQ3_DECODER)+= svq3.o svq13.o mpegutils.o \ - h264_parse.o h264data.o h264_ps.o h2645_parse.o +OBJS-$(CONFIG_SVQ3_DECODER)+= svq3.o svq13.o mpegutils.o h264data.o OBJS-$(CONFIG_TEXT_DECODER)+= textdec.o ass.o OBJS-$(CONFIG_TEXT_ENCODER)+= srtenc.o ass_split.o OBJS-$(CONFIG_TAK_DECODER) += takdec.o tak.o takdsp.o @@ -937,8 +936,7 @@ OBJS-$(CONFIG_G729_PARSER) += g729_parser.o OBJS-$(CONFIG_GSM_PARSER) += gsm_parser.o OBJS-$(CONFIG_H261_PARSER) += h261_parser.o OBJS-$(CONFIG_H263_PARSER) += h263_parser.o -OBJS-$(CONFIG_H264_PARSER) += h264_parser.o h264_parse.o h2645_parse.o \ -
[FFmpeg-cvslog] Merge commit '7c55fac7dfa8bad9644dea5d03309da30be69563'
ffmpeg | branch: master | Hendrik Leppkes <h.lepp...@gmail.com> | Mon Nov 14 10:02:33 2016 +0100| [8ef6ba69c7f2010383eac12d5a7f2e24238ac10e] | committer: Hendrik Leppkes Merge commit '7c55fac7dfa8bad9644dea5d03309da30be69563' * commit '7c55fac7dfa8bad9644dea5d03309da30be69563': fate: Add test for webp Noop, we already have a variety of webp tests, including a fate-webp target, which would collide with this test. Merged-by: Hendrik Leppkes <h.lepp...@gmail.com> > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=8ef6ba69c7f2010383eac12d5a7f2e24238ac10e --- ___ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog
[FFmpeg-cvslog] Merge commit '3c08b7bc761b6411f55db68189721638dde2c46a'
ffmpeg | branch: master | Hendrik Leppkes <h.lepp...@gmail.com> | Mon Nov 14 10:05:43 2016 +0100| [a81b9c60125f24ae1101be7429b15e74031453e7] | committer: Hendrik Leppkes Merge commit '3c08b7bc761b6411f55db68189721638dde2c46a' * commit '3c08b7bc761b6411f55db68189721638dde2c46a': ffv1: Report additional bitstream information in verbose mode Noop, we already have bitstream information printing. Merged-by: Hendrik Leppkes <h.lepp...@gmail.com> > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=a81b9c60125f24ae1101be7429b15e74031453e7 --- ___ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog
[FFmpeg-cvslog] Merge commit 'fe6e5cbea7dbd5d2c67d79b5570e26debb70e95b'
ffmpeg | branch: master | Hendrik Leppkes <h.lepp...@gmail.com> | Mon Nov 14 10:03:30 2016 +0100| [5a45f4d2b74b93997c28a3238b8f55fa628158b5] | committer: Hendrik Leppkes Merge commit 'fe6e5cbea7dbd5d2c67d79b5570e26debb70e95b' * commit 'fe6e5cbea7dbd5d2c67d79b5570e26debb70e95b': ffv1: Remove version 2 and mark version 3 as non-experimental Noop, our ffv1 decoder is far more advanced and version 3 has been stable for a while. Merged-by: Hendrik Leppkes <h.lepp...@gmail.com> > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=5a45f4d2b74b93997c28a3238b8f55fa628158b5 --- ___ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog