[FFmpeg-cvslog] h264: straighten dimensions check ff_h264_decode_seq_parameter_set
ffmpeg | branch: master | Benoit Fouet | Mon Jun 27 13:31:21 2016 +0200| [4cc1ce4a91788a71670ea43fa0026b5a969e9e9e] | committer: Benoit Fouet h264: straighten dimensions check ff_h264_decode_seq_parameter_set The MBS only flag was not taken into account when checking macroblock dimensions. Also removes the unneeded check in init_dimensions for slices. > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=4cc1ce4a91788a71670ea43fa0026b5a969e9e9e --- libavcodec/h264_ps.c| 15 --- libavcodec/h264_slice.c | 17 - 2 files changed, 8 insertions(+), 24 deletions(-) diff --git a/libavcodec/h264_ps.c b/libavcodec/h264_ps.c index 2f166c5..76ac9f1 100644 --- a/libavcodec/h264_ps.c +++ b/libavcodec/h264_ps.c @@ -464,13 +464,6 @@ int ff_h264_decode_seq_parameter_set(GetBitContext *gb, AVCodecContext *avctx, sps->gaps_in_frame_num_allowed_flag = get_bits1(gb); sps->mb_width = get_ue_golomb(gb) + 1; sps->mb_height = get_ue_golomb(gb) + 1; -if ((unsigned)sps->mb_width >= INT_MAX / 16 || -(unsigned)sps->mb_height >= INT_MAX / 16 || -av_image_check_size(16 * sps->mb_width, -16 * sps->mb_height, 0, avctx)) { -av_log(avctx, AV_LOG_ERROR, "mb_width/height overflow\n"); -goto fail; -} sps->frame_mbs_only_flag = get_bits1(gb); if (!sps->frame_mbs_only_flag) @@ -478,6 +471,14 @@ int ff_h264_decode_seq_parameter_set(GetBitContext *gb, AVCodecContext *avctx, 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)) || +av_image_check_size(16 * sps->mb_width, +16 * sps->mb_height * (2 - sps->frame_mbs_only_flag), 0, avctx)) { +av_log(avctx, AV_LOG_ERROR, "mb_width/height overflow\n"); +goto fail; +} + sps->direct_8x8_inference_flag = get_bits1(gb); #ifndef ALLOW_INTERLACE diff --git a/libavcodec/h264_slice.c b/libavcodec/h264_slice.c index adbd1d8..6babd66 100644 --- a/libavcodec/h264_slice.c +++ b/libavcodec/h264_slice.c @@ -889,23 +889,6 @@ static int init_dimensions(H264Context *h) height = h->avctx->height; } -if (width <= 0 || height <= 0) { -av_log(h->avctx, AV_LOG_ERROR, "Invalid cropped dimensions: %dx%d.\n", - width, height); -if (h->avctx->err_recognition & AV_EF_EXPLODE) -return AVERROR_INVALIDDATA; - -av_log(h->avctx, AV_LOG_WARNING, "Ignoring cropping information.\n"); -sps->crop_bottom = -sps->crop_top= -sps->crop_right = -sps->crop_left = -sps->crop= 0; - -width = h->width; -height = h->height; -} - h->avctx->coded_width = h->width; h->avctx->coded_height = h->height; h->avctx->width= width; ___ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog
[FFmpeg-cvslog] h264: make H264ParamSets sps const
ffmpeg | branch: master | Benoit Fouet | Tue Jun 21 14:17:13 2016 +0200| [879330c561f4214bd81c35f46f31dd7fe906a59a] | committer: Benoit Fouet h264: make H264ParamSets sps const > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=879330c561f4214bd81c35f46f31dd7fe906a59a --- libavcodec/h264.h|3 +-- libavcodec/h264_parser.c |2 +- libavcodec/h264_ps.c |4 ++-- libavcodec/h264_sei.c|4 ++-- libavcodec/h264_slice.c |4 ++-- 5 files changed, 8 insertions(+), 9 deletions(-) diff --git a/libavcodec/h264.h b/libavcodec/h264.h index 3512aaa..f0e4573 100644 --- a/libavcodec/h264.h +++ b/libavcodec/h264.h @@ -234,8 +234,7 @@ typedef struct H264ParamSets { AVBufferRef *sps_ref; /* currently active parameters sets */ const PPS *pps; -// FIXME this should properly be const -SPS *sps; +const SPS *sps; } H264ParamSets; /** diff --git a/libavcodec/h264_parser.c b/libavcodec/h264_parser.c index ce4bab2..7af2a8d 100644 --- a/libavcodec/h264_parser.c +++ b/libavcodec/h264_parser.c @@ -373,7 +373,7 @@ static inline int parse_nal_units(AVCodecParserContext *s, "non-existing SPS %u referenced\n", p->ps.pps->sps_id); goto fail; } -p->ps.sps = (SPS*)p->ps.sps_list[p->ps.pps->sps_id]->data; +p->ps.sps = (const SPS*)p->ps.sps_list[p->ps.pps->sps_id]->data; sps = p->ps.sps; diff --git a/libavcodec/h264_ps.c b/libavcodec/h264_ps.c index 76ac9f1..1e1e793 100644 --- a/libavcodec/h264_ps.c +++ b/libavcodec/h264_ps.c @@ -712,7 +712,7 @@ int ff_h264_decode_picture_parameter_set(GetBitContext *gb, AVCodecContext *avct H264ParamSets *ps, int bit_length) { AVBufferRef *pps_buf; -SPS *sps; +const SPS *sps; unsigned int pps_id = get_ue_golomb(gb); PPS *pps; int qp_bd_offset; @@ -743,7 +743,7 @@ int ff_h264_decode_picture_parameter_set(GetBitContext *gb, AVCodecContext *avct ret = AVERROR_INVALIDDATA; goto fail; } -sps = (SPS*)ps->sps_list[pps->sps_id]->data; +sps = (const SPS*)ps->sps_list[pps->sps_id]->data; if (sps->bit_depth_luma > 14) { av_log(avctx, AV_LOG_ERROR, "Invalid luma bit depth=%d\n", diff --git a/libavcodec/h264_sei.c b/libavcodec/h264_sei.c index 0bbd7e5..3bdbaa0 100644 --- a/libavcodec/h264_sei.c +++ b/libavcodec/h264_sei.c @@ -278,7 +278,7 @@ static int decode_buffering_period(H264SEIBufferingPeriod *h, GetBitContext *gb, { unsigned int sps_id; int sched_sel_idx; -SPS *sps; +const SPS *sps; sps_id = get_ue_golomb_31(gb); if (sps_id > 31 || !ps->sps_list[sps_id]) { @@ -286,7 +286,7 @@ static int decode_buffering_period(H264SEIBufferingPeriod *h, GetBitContext *gb, "non-existing SPS %d referenced in buffering period\n", sps_id); return sps_id > 31 ? AVERROR_INVALIDDATA : AVERROR_PS_NOT_FOUND; } -sps = (SPS*)ps->sps_list[sps_id]->data; +sps = (const SPS*)ps->sps_list[sps_id]->data; // NOTE: This is really so duplicated in the standard... See H.264, D.1.1 if (sps->nal_hrd_parameters_present_flag) { diff --git a/libavcodec/h264_slice.c b/libavcodec/h264_slice.c index 6babd66..a63c9b9 100644 --- a/libavcodec/h264_slice.c +++ b/libavcodec/h264_slice.c @@ -356,7 +356,7 @@ int ff_h264_update_thread_context(AVCodecContext *dst, h->ps.sps_ref = av_buffer_ref(h1->ps.sps_ref); if (!h->ps.sps_ref) return AVERROR(ENOMEM); -h->ps.sps = (SPS*)h->ps.sps_ref->data; +h->ps.sps = (const SPS*)h->ps.sps_ref->data; } if (need_reinit || !inited) { @@ -873,7 +873,7 @@ static enum AVPixelFormat get_pixel_format(H264Context *h, int force_callback) /* export coded and cropped frame dimensions to AVCodecContext */ static int init_dimensions(H264Context *h) { -SPS *sps = h->ps.sps; +const SPS *sps = (const SPS*)h->ps.sps; int width = h->width - (sps->crop_right + sps->crop_left); int height = h->height - (sps->crop_top + sps->crop_bottom); av_assert0(sps->crop_right + sps->crop_left < (unsigned)h->width); ___ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog
[FFmpeg-cvslog] h264_ps: change decode_scaling_matrices so that it takes const {s, p}ps
ffmpeg | branch: master | Benoit Fouet | Mon Jun 27 12:00:39 2016 +0200| [3e8cda1eb1a8b4058a6bf40d3a224784a0153e3d] | committer: Benoit Fouet h264_ps: change decode_scaling_matrices so that it takes const {s,p}ps In order to be able to make SPS const in H264ParamSets, modify decode_scaling_matrices so that it returns if the scaling matrix are present in the SPS, instead of altering the input SPS structure. > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=3e8cda1eb1a8b4058a6bf40d3a224784a0153e3d --- libavcodec/h264_ps.c | 12 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/libavcodec/h264_ps.c b/libavcodec/h264_ps.c index 943d953..2f166c5 100644 --- a/libavcodec/h264_ps.c +++ b/libavcodec/h264_ps.c @@ -265,8 +265,9 @@ static void decode_scaling_list(GetBitContext *gb, uint8_t *factors, int size, } } -static void decode_scaling_matrices(GetBitContext *gb, SPS *sps, -PPS *pps, int is_sps, +/* returns non zero if the provided SPS scaling matrix has been filled */ +static int decode_scaling_matrices(GetBitContext *gb, const SPS *sps, +const PPS *pps, int is_sps, uint8_t(*scaling_matrix4)[16], uint8_t(*scaling_matrix8)[64]) { @@ -277,8 +278,9 @@ static void decode_scaling_matrices(GetBitContext *gb, SPS *sps, fallback_sps ? sps->scaling_matrix8[0] : default_scaling8[0], fallback_sps ? sps->scaling_matrix8[3] : default_scaling8[1] }; +int ret = 0; if (get_bits1(gb)) { -sps->scaling_matrix_present |= is_sps; +ret = is_sps; decode_scaling_list(gb, scaling_matrix4[0], 16, default_scaling4[0], fallback[0]);// Intra, Y decode_scaling_list(gb, scaling_matrix4[1], 16, default_scaling4[0], scaling_matrix4[0]); // Intra, Cr decode_scaling_list(gb, scaling_matrix4[2], 16, default_scaling4[0], scaling_matrix4[1]); // Intra, Cb @@ -296,6 +298,8 @@ static void decode_scaling_matrices(GetBitContext *gb, SPS *sps, } } } + +return ret; } void ff_h264_ps_uninit(H264ParamSets *ps) @@ -401,7 +405,7 @@ int ff_h264_decode_seq_parameter_set(GetBitContext *gb, AVCodecContext *avctx, goto fail; } sps->transform_bypass = get_bits1(gb); -decode_scaling_matrices(gb, sps, NULL, 1, +sps->scaling_matrix_present |= decode_scaling_matrices(gb, sps, NULL, 1, sps->scaling_matrix4, sps->scaling_matrix8); } else { sps->chroma_format_idc = 1; ___ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog
[FFmpeg-cvslog] h264: postpone generating the implicit MMCOs
ffmpeg | branch: master | Anton Khirnov | Mon May 9 14:25:56 2016 +0200| [bec993381cfec72051b0d9f12ac9d9bb9c750983] | committer: Anton Khirnov h264: postpone generating the implicit MMCOs Do it right before the MMCOs are applied to the DPB. This will allow moving the frame_start() call out of the slice header parsing, since generating the implicit MMCOs needs to be done after frame_start(). > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=bec993381cfec72051b0d9f12ac9d9bb9c750983 --- libavcodec/h264.h |6 +++--- libavcodec/h264_picture.c |2 +- libavcodec/h264_refs.c| 33 - libavcodec/h264_slice.c | 12 ++-- 4 files changed, 26 insertions(+), 27 deletions(-) diff --git a/libavcodec/h264.h b/libavcodec/h264.h index 227cdab..ee64981 100644 --- a/libavcodec/h264.h +++ b/libavcodec/h264.h @@ -442,6 +442,7 @@ typedef struct H264SliceContext { MMCO mmco[MAX_MMCO_COUNT]; int nb_mmco; +int explicit_ref_marking; } H264SliceContext; /** @@ -579,6 +580,7 @@ typedef struct H264Context { MMCO mmco[MAX_MMCO_COUNT]; int nb_mmco; int mmco_reset; +int explicit_ref_marking; int long_ref_count; ///< number of actual long term references int short_ref_count;///< number of actual short term references @@ -672,13 +674,11 @@ void ff_h264_remove_all_refs(H264Context *h); /** * Execute the reference picture marking (memory management control operations). */ -int ff_h264_execute_ref_pic_marking(H264Context *h, MMCO *mmco, int mmco_count); +int ff_h264_execute_ref_pic_marking(H264Context *h); int ff_h264_decode_ref_pic_marking(const H264Context *h, H264SliceContext *sl, GetBitContext *gb); -int ff_generate_sliding_window_mmcos(const H264Context *h, H264SliceContext *sl); - void ff_h264_hl_decode_mb(const H264Context *h, H264SliceContext *sl); int ff_h264_decode_init(AVCodecContext *avctx); void ff_h264_decode_init_vlc(void); diff --git a/libavcodec/h264_picture.c b/libavcodec/h264_picture.c index b16e3c0..cd7ff82 100644 --- a/libavcodec/h264_picture.c +++ b/libavcodec/h264_picture.c @@ -154,7 +154,7 @@ int ff_h264_field_end(H264Context *h, H264SliceContext *sl, int in_setup) if (in_setup || !(avctx->active_thread_type & FF_THREAD_FRAME)) { if (!h->droppable) { -err = ff_h264_execute_ref_pic_marking(h, h->mmco, h->nb_mmco); +err = ff_h264_execute_ref_pic_marking(h); h->poc.prev_poc_msb = h->poc.poc_msb; h->poc.prev_poc_lsb = h->poc.poc_lsb; } diff --git a/libavcodec/h264_refs.c b/libavcodec/h264_refs.c index dae5565..c4b33af 100644 --- a/libavcodec/h264_refs.c +++ b/libavcodec/h264_refs.c @@ -536,11 +536,10 @@ static int check_opcodes(MMCO *mmco1, MMCO *mmco2, int n_mmcos) return 0; } -int ff_generate_sliding_window_mmcos(const H264Context *h, - H264SliceContext *sl) +static void generate_sliding_window_mmcos(H264Context *h) { -MMCO *mmco = sl->mmco; -int nb_mmco = 0, i = 0; +MMCO *mmco = h->mmco; +int nb_mmco = 0; assert(h->long_ref_count + h->short_ref_count <= h->ps.sps->ref_frame_count); @@ -558,17 +557,21 @@ int ff_generate_sliding_window_mmcos(const H264Context *h, } } -sl->nb_mmco = nb_mmco; - -return 0; +h->nb_mmco = nb_mmco; } -int ff_h264_execute_ref_pic_marking(H264Context *h, MMCO *mmco, int mmco_count) +int ff_h264_execute_ref_pic_marking(H264Context *h) { +MMCO *mmco = h->mmco; +int mmco_count; int i, av_uninit(j); int current_ref_assigned = 0, err = 0; H264Picture *av_uninit(pic); +if (!h->explicit_ref_marking) +generate_sliding_window_mmcos(h); +mmco_count = h->nb_mmco; + if ((h->avctx->debug & FF_DEBUG_MMCO) && mmco_count == 0) av_log(h->avctx, AV_LOG_DEBUG, "no mmco here\n"); @@ -739,7 +742,7 @@ int ff_h264_execute_ref_pic_marking(H264Context *h, MMCO *mmco, int mmco_count) int ff_h264_decode_ref_pic_marking(const H264Context *h, H264SliceContext *sl, GetBitContext *gb) { -int i, ret; +int i; MMCO *mmco = sl->mmco; int nb_mmco = 0; @@ -750,8 +753,10 @@ int ff_h264_decode_ref_pic_marking(const H264Context *h, H264SliceContext *sl, mmco[0].long_arg = 0; nb_mmco = 1; } +sl->explicit_ref_marking = 1; } else { -if (get_bits1(gb)) { // adaptive_ref_pic_marking_mode_flag +sl->explicit_ref_marking = get_bits1(gb); +if (sl->explicit_ref_marking) { for (i = 0; i < MAX_MMCO_COUNT; i++) { MMCOOpcode opcode = get_ue_golomb_31(gb); @@ -795,16 +800,10 @@ int ff_h264_decode_ref_pic_marking(const H264Context *h, H264SliceContext *sl, break; } nb_mmco = i; -} else { -re
[FFmpeg-cvslog] Merge commit '2d410ebbaa1e760d6837cb434a6d1d4c3c6f0d85'
ffmpeg | branch: master | Clément Bœsch | Thu Jun 30 10:15:51 2016 +0200| [d407e76c42d5ae79791ff88d3bd5185e10ad6047] | committer: Clément Bœsch Merge commit '2d410ebbaa1e760d6837cb434a6d1d4c3c6f0d85' * commit '2d410ebbaa1e760d6837cb434a6d1d4c3c6f0d85': h264: decode the MMCOs into per-slice contexts Merged-by: Clément Bœsch > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=d407e76c42d5ae79791ff88d3bd5185e10ad6047 --- libavcodec/h264.h |9 ++--- libavcodec/h264_refs.c | 44 +--- libavcodec/h264_slice.c | 21 ++--- 3 files changed, 29 insertions(+), 45 deletions(-) diff --git a/libavcodec/h264.h b/libavcodec/h264.h index f0e4573..84cf59e 100644 --- a/libavcodec/h264.h +++ b/libavcodec/h264.h @@ -453,6 +453,9 @@ typedef struct H264SliceContext { CABACContext cabac; uint8_t cabac_state[1024]; int cabac_init_idc; + +MMCO mmco[MAX_MMCO_COUNT]; +int nb_mmco; } H264SliceContext; /** @@ -728,10 +731,10 @@ void ff_h264_remove_all_refs(H264Context *h); */ int ff_h264_execute_ref_pic_marking(H264Context *h, MMCO *mmco, int mmco_count); -int ff_h264_decode_ref_pic_marking(H264Context *h, GetBitContext *gb, - int first_slice); +int ff_h264_decode_ref_pic_marking(const H264Context *h, H264SliceContext *sl, + GetBitContext *gb); -int ff_generate_sliding_window_mmcos(H264Context *h, int first_slice); +int ff_generate_sliding_window_mmcos(const H264Context *h, H264SliceContext *sl); void ff_h264_hl_decode_mb(const H264Context *h, H264SliceContext *sl); int ff_h264_decode_init(AVCodecContext *avctx); diff --git a/libavcodec/h264_refs.c b/libavcodec/h264_refs.c index e7ae447..c710012 100644 --- a/libavcodec/h264_refs.c +++ b/libavcodec/h264_refs.c @@ -601,9 +601,10 @@ static int check_opcodes(MMCO *mmco1, MMCO *mmco2, int n_mmcos) return 0; } -int ff_generate_sliding_window_mmcos(H264Context *h, int first_slice) +int ff_generate_sliding_window_mmcos(const H264Context *h, + H264SliceContext *sl) { -MMCO mmco_temp[MAX_MMCO_COUNT], *mmco = first_slice ? h->mmco : mmco_temp; +MMCO *mmco = sl->mmco; int nb_mmco = 0, i = 0; if (h->short_ref_count && @@ -620,16 +621,8 @@ int ff_generate_sliding_window_mmcos(H264Context *h, int first_slice) } } -if (first_slice) { -h->nb_mmco = nb_mmco; -} else if (!first_slice && nb_mmco >= 0 && - (nb_mmco != h->nb_mmco || -(i = check_opcodes(h->mmco, mmco_temp, nb_mmco { -av_log(h->avctx, AV_LOG_ERROR, - "Inconsistent MMCO state between slices [%d, %d]\n", - nb_mmco, h->nb_mmco); -return AVERROR_INVALIDDATA; -} +sl->nb_mmco = nb_mmco; + return 0; } @@ -842,11 +835,11 @@ int ff_h264_execute_ref_pic_marking(H264Context *h, MMCO *mmco, int mmco_count) return (h->avctx->err_recognition & AV_EF_EXPLODE) ? err : 0; } -int ff_h264_decode_ref_pic_marking(H264Context *h, GetBitContext *gb, - int first_slice) +int ff_h264_decode_ref_pic_marking(const H264Context *h, H264SliceContext *sl, + GetBitContext *gb) { int i, ret; -MMCO mmco_temp[MAX_MMCO_COUNT], *mmco = mmco_temp; +MMCO *mmco = sl->mmco; int nb_mmco = 0; if (h->nal_unit_type == NAL_IDR_SLICE) { // FIXME fields @@ -902,26 +895,15 @@ int ff_h264_decode_ref_pic_marking(H264Context *h, GetBitContext *gb, } nb_mmco = i; } else { -if (first_slice) { -ret = ff_generate_sliding_window_mmcos(h, first_slice); -if (ret < 0 && h->avctx->err_recognition & AV_EF_EXPLODE) -return ret; -} +ret = ff_generate_sliding_window_mmcos(h, sl); +if (ret < 0 && h->avctx->err_recognition & AV_EF_EXPLODE) +return ret; nb_mmco = -1; } } -if (first_slice && nb_mmco != -1) { -memcpy(h->mmco, mmco_temp, sizeof(h->mmco)); -h->nb_mmco = nb_mmco; -} else if (!first_slice && nb_mmco >= 0 && - (nb_mmco != h->nb_mmco || -check_opcodes(h->mmco, mmco_temp, nb_mmco))) { -av_log(h->avctx, AV_LOG_ERROR, - "Inconsistent MMCO state between slices [%d, %d]\n", - nb_mmco, h->nb_mmco); -return AVERROR_INVALIDDATA; -} +if (nb_mmco != -1) +sl->nb_mmco = nb_mmco; return 0; } diff --git a/libavcodec/h264_slice.c b/libavcodec/h264_slice.c index a63c9b9..cb52b77 100644 --- a/libavcodec/h264_slice.c +++ b/libavcodec/h264_slice.c @@ -1421,10 +1421,12 @@ static int h264_slice_header_parse(H264Context *h, H264SliceContext *sl) h->cur_pic_ptr->invalid_gap = !sps->gaps_in_frame_num_allowed_flag;
[FFmpeg-cvslog] h264: decode the MMCOs into per-slice contexts
ffmpeg | branch: master | Anton Khirnov | Mon May 9 13:48:01 2016 +0200| [2d410ebbaa1e760d6837cb434a6d1d4c3c6f0d85] | committer: Anton Khirnov h264: decode the MMCOs into per-slice contexts They are stored in the slice header, so technically they are per-slice (though they must be the same in every slice). This will simplify the following commits. > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=2d410ebbaa1e760d6837cb434a6d1d4c3c6f0d85 --- libavcodec/h264.h |9 ++--- libavcodec/h264_refs.c | 43 +-- libavcodec/h264_slice.c | 21 ++--- 3 files changed, 29 insertions(+), 44 deletions(-) diff --git a/libavcodec/h264.h b/libavcodec/h264.h index feccf3a..227cdab 100644 --- a/libavcodec/h264.h +++ b/libavcodec/h264.h @@ -439,6 +439,9 @@ typedef struct H264SliceContext { CABACContext cabac; uint8_t cabac_state[1024]; int cabac_init_idc; + +MMCO mmco[MAX_MMCO_COUNT]; +int nb_mmco; } H264SliceContext; /** @@ -671,10 +674,10 @@ void ff_h264_remove_all_refs(H264Context *h); */ int ff_h264_execute_ref_pic_marking(H264Context *h, MMCO *mmco, int mmco_count); -int ff_h264_decode_ref_pic_marking(H264Context *h, GetBitContext *gb, - int first_slice); +int ff_h264_decode_ref_pic_marking(const H264Context *h, H264SliceContext *sl, + GetBitContext *gb); -int ff_generate_sliding_window_mmcos(H264Context *h, int first_slice); +int ff_generate_sliding_window_mmcos(const H264Context *h, H264SliceContext *sl); void ff_h264_hl_decode_mb(const H264Context *h, H264SliceContext *sl); int ff_h264_decode_init(AVCodecContext *avctx); diff --git a/libavcodec/h264_refs.c b/libavcodec/h264_refs.c index d985c5e..dae5565 100644 --- a/libavcodec/h264_refs.c +++ b/libavcodec/h264_refs.c @@ -536,9 +536,10 @@ static int check_opcodes(MMCO *mmco1, MMCO *mmco2, int n_mmcos) return 0; } -int ff_generate_sliding_window_mmcos(H264Context *h, int first_slice) +int ff_generate_sliding_window_mmcos(const H264Context *h, + H264SliceContext *sl) { -MMCO mmco_temp[MAX_MMCO_COUNT], *mmco = first_slice ? h->mmco : mmco_temp; +MMCO *mmco = sl->mmco; int nb_mmco = 0, i = 0; assert(h->long_ref_count + h->short_ref_count <= h->ps.sps->ref_frame_count); @@ -557,16 +558,8 @@ int ff_generate_sliding_window_mmcos(H264Context *h, int first_slice) } } -if (first_slice) { -h->nb_mmco = nb_mmco; -} else if (!first_slice && nb_mmco >= 0 && - (nb_mmco != h->nb_mmco || -(i = check_opcodes(h->mmco, mmco_temp, nb_mmco { -av_log(h->avctx, AV_LOG_ERROR, - "Inconsistent MMCO state between slices [%d, %d, %d]\n", - nb_mmco, h->nb_mmco, i); -return AVERROR_INVALIDDATA; -} +sl->nb_mmco = nb_mmco; + return 0; } @@ -743,11 +736,11 @@ int ff_h264_execute_ref_pic_marking(H264Context *h, MMCO *mmco, int mmco_count) return (h->avctx->err_recognition & AV_EF_EXPLODE) ? err : 0; } -int ff_h264_decode_ref_pic_marking(H264Context *h, GetBitContext *gb, - int first_slice) +int ff_h264_decode_ref_pic_marking(const H264Context *h, H264SliceContext *sl, + GetBitContext *gb) { int i, ret; -MMCO mmco_temp[MAX_MMCO_COUNT], *mmco = first_slice ? h->mmco : mmco_temp; +MMCO *mmco = sl->mmco; int nb_mmco = 0; if (h->nal_unit_type == NAL_IDR_SLICE) { // FIXME fields @@ -803,25 +796,15 @@ int ff_h264_decode_ref_pic_marking(H264Context *h, GetBitContext *gb, } nb_mmco = i; } else { -if (first_slice) { -ret = ff_generate_sliding_window_mmcos(h, first_slice); -if (ret < 0 && h->avctx->err_recognition & AV_EF_EXPLODE) -return ret; -} +ret = ff_generate_sliding_window_mmcos(h, sl); +if (ret < 0 && h->avctx->err_recognition & AV_EF_EXPLODE) +return ret; nb_mmco = -1; } } -if (first_slice && nb_mmco != -1) { -h->nb_mmco = nb_mmco; -} else if (!first_slice && nb_mmco >= 0 && - (nb_mmco != h->nb_mmco || -check_opcodes(h->mmco, mmco_temp, nb_mmco))) { -av_log(h->avctx, AV_LOG_ERROR, - "Inconsistent MMCO state between slices [%d, %d]\n", - nb_mmco, h->nb_mmco); -return AVERROR_INVALIDDATA; -} +if (nb_mmco != -1) +sl->nb_mmco = nb_mmco; return 0; } diff --git a/libavcodec/h264_slice.c b/libavcodec/h264_slice.c index 634f181..6967edb 100644 --- a/libavcodec/h264_slice.c +++ b/libavcodec/h264_slice.c @@ -1201,10 +1201,12 @@ static int h264_slice_header_parse(H264Context *h, H264SliceContext *sl) h->cur_pic_ptr->frame_num
[FFmpeg-cvslog] Merge commit 'bec993381cfec72051b0d9f12ac9d9bb9c750983'
ffmpeg | branch: master | Clément Bœsch | Thu Jun 30 10:24:03 2016 +0200| [f48aea66ddfef3998ee7aaf6c6567577ae481807] | committer: Clément Bœsch Merge commit 'bec993381cfec72051b0d9f12ac9d9bb9c750983' * commit 'bec993381cfec72051b0d9f12ac9d9bb9c750983': h264: postpone generating the implicit MMCOs Merged-by: Clément Bœsch > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=f48aea66ddfef3998ee7aaf6c6567577ae481807 --- libavcodec/h264.h |6 +++--- libavcodec/h264_picture.c |2 +- libavcodec/h264_refs.c| 33 - libavcodec/h264_slice.c | 12 ++-- 4 files changed, 26 insertions(+), 27 deletions(-) diff --git a/libavcodec/h264.h b/libavcodec/h264.h index 84cf59e..efca5ab 100644 --- a/libavcodec/h264.h +++ b/libavcodec/h264.h @@ -456,6 +456,7 @@ typedef struct H264SliceContext { MMCO mmco[MAX_MMCO_COUNT]; int nb_mmco; +int explicit_ref_marking; } H264SliceContext; /** @@ -603,6 +604,7 @@ typedef struct H264Context { MMCO mmco[MAX_MMCO_COUNT]; int nb_mmco; int mmco_reset; +int explicit_ref_marking; int long_ref_count; ///< number of actual long term references int short_ref_count;///< number of actual short term references @@ -729,13 +731,11 @@ void ff_h264_remove_all_refs(H264Context *h); /** * Execute the reference picture marking (memory management control operations). */ -int ff_h264_execute_ref_pic_marking(H264Context *h, MMCO *mmco, int mmco_count); +int ff_h264_execute_ref_pic_marking(H264Context *h); int ff_h264_decode_ref_pic_marking(const H264Context *h, H264SliceContext *sl, GetBitContext *gb); -int ff_generate_sliding_window_mmcos(const H264Context *h, H264SliceContext *sl); - void ff_h264_hl_decode_mb(const H264Context *h, H264SliceContext *sl); int ff_h264_decode_init(AVCodecContext *avctx); void ff_h264_decode_init_vlc(void); diff --git a/libavcodec/h264_picture.c b/libavcodec/h264_picture.c index 320bb0c..6426b54 100644 --- a/libavcodec/h264_picture.c +++ b/libavcodec/h264_picture.c @@ -164,7 +164,7 @@ int ff_h264_field_end(H264Context *h, H264SliceContext *sl, int in_setup) if (in_setup || !(avctx->active_thread_type & FF_THREAD_FRAME)) { if (!h->droppable) { -err = ff_h264_execute_ref_pic_marking(h, h->mmco, h->nb_mmco); +err = ff_h264_execute_ref_pic_marking(h); h->poc.prev_poc_msb = h->poc.poc_msb; h->poc.prev_poc_lsb = h->poc.poc_lsb; } diff --git a/libavcodec/h264_refs.c b/libavcodec/h264_refs.c index c710012..5905276 100644 --- a/libavcodec/h264_refs.c +++ b/libavcodec/h264_refs.c @@ -601,11 +601,10 @@ static int check_opcodes(MMCO *mmco1, MMCO *mmco2, int n_mmcos) return 0; } -int ff_generate_sliding_window_mmcos(const H264Context *h, - H264SliceContext *sl) +static void generate_sliding_window_mmcos(H264Context *h) { -MMCO *mmco = sl->mmco; -int nb_mmco = 0, i = 0; +MMCO *mmco = h->mmco; +int nb_mmco = 0; if (h->short_ref_count && h->long_ref_count + h->short_ref_count >= h->ps.sps->ref_frame_count && @@ -621,18 +620,22 @@ int ff_generate_sliding_window_mmcos(const H264Context *h, } } -sl->nb_mmco = nb_mmco; - -return 0; +h->nb_mmco = nb_mmco; } -int ff_h264_execute_ref_pic_marking(H264Context *h, MMCO *mmco, int mmco_count) +int ff_h264_execute_ref_pic_marking(H264Context *h) { +MMCO *mmco = h->mmco; +int mmco_count; int i, av_uninit(j); int pps_ref_count[2] = {0}; int current_ref_assigned = 0, err = 0; H264Picture *av_uninit(pic); +if (!h->explicit_ref_marking) +generate_sliding_window_mmcos(h); +mmco_count = h->nb_mmco; + if ((h->avctx->debug & FF_DEBUG_MMCO) && mmco_count == 0) av_log(h->avctx, AV_LOG_DEBUG, "no mmco here\n"); @@ -838,7 +841,7 @@ int ff_h264_execute_ref_pic_marking(H264Context *h, MMCO *mmco, int mmco_count) int ff_h264_decode_ref_pic_marking(const H264Context *h, H264SliceContext *sl, GetBitContext *gb) { -int i, ret; +int i; MMCO *mmco = sl->mmco; int nb_mmco = 0; @@ -849,8 +852,10 @@ int ff_h264_decode_ref_pic_marking(const H264Context *h, H264SliceContext *sl, mmco[0].long_arg = 0; nb_mmco = 1; } +sl->explicit_ref_marking = 1; } else { -if (get_bits1(gb)) { // adaptive_ref_pic_marking_mode_flag +sl->explicit_ref_marking = get_bits1(gb); +if (sl->explicit_ref_marking) { for (i = 0; i < MAX_MMCO_COUNT; i++) { MMCOOpcode opcode = get_ue_golomb_31(gb); @@ -894,16 +899,10 @@ int ff_h264_decode_ref_pic_marking(const H264Context *h, H264SliceContext *sl, break; } nb_mmco = i; -} else { -ret = ff_ge
[FFmpeg-cvslog] avformat/mov: Check sample size
ffmpeg | branch: release/3.1 | Michael Niedermayer | Tue Jun 28 23:49:36 2016 +0200| [3e730278f5a8e5ec3f9593700488a940f38dfac1] | committer: Michael Niedermayer avformat/mov: Check sample size Fixes integer overflow Fixes: poc.mp4 Found-by: ajax secure Signed-off-by: Michael Niedermayer (cherry picked from commit 8a3221cc67a516dfc1700bdae3566ec52c7ee823) Signed-off-by: Michael Niedermayer > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=3e730278f5a8e5ec3f9593700488a940f38dfac1 --- libavformat/mov.c | 11 ++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/libavformat/mov.c b/libavformat/mov.c index c7caf80..33ee799 100644 --- a/libavformat/mov.c +++ b/libavformat/mov.c @@ -2843,7 +2843,12 @@ static void mov_build_index(MOVContext *mov, AVStream *st) sample_size = sc->stsz_sample_size > 0 ? sc->stsz_sample_size : sc->sample_sizes[current_sample]; if (sc->pseudo_stream_id == -1 || sc->stsc_data[stsc_index].id - 1 == sc->pseudo_stream_id) { -AVIndexEntry *e = &st->index_entries[st->nb_index_entries++]; +AVIndexEntry *e; +if (sample_size > 0x3FFF) { +av_log(mov->fc, AV_LOG_ERROR, "Sample size %u is too large\n", sample_size); +return; +} +e = &st->index_entries[st->nb_index_entries++]; e->pos = current_offset; e->timestamp = current_dts; e->size = sample_size; @@ -2968,6 +2973,10 @@ static void mov_build_index(MOVContext *mov, AVStream *st) av_log(mov->fc, AV_LOG_ERROR, "wrong chunk count %d\n", total); return; } +if (size > 0x3FFF) { +av_log(mov->fc, AV_LOG_ERROR, "Sample size %u is too large\n", size); +return; +} e = &st->index_entries[st->nb_index_entries++]; e->pos = current_offset; e->timestamp = current_dts; ___ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog
[FFmpeg-cvslog] PPC64: Add versions of functions in libswscale/ input.c optimized for POWER8 VSX SIMD.
ffmpeg | branch: master | Dan Parrot | Wed Jun 29 16:15:12 2016 +| [1df908f33f658979b32599489ca6f1a39821013c] | committer: Michael Niedermayer PPC64: Add versions of functions in libswscale/input.c optimized for POWER8 VSX SIMD. This patch addresses Trac ticket #5570. The optimized functions are in file libswscale/ppc/input_vsx.c. Each optimized function name is a concatenation of the corresponding name in libswscale/input.c with suffix _vsx. Signed-off-by: Michael Niedermayer > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=1df908f33f658979b32599489ca6f1a39821013c --- libswscale/ppc/Makefile |1 + libswscale/ppc/input_vsx.c| 437 + libswscale/swscale.c |3 + libswscale/swscale_internal.h |1 + 4 files changed, 442 insertions(+) diff --git a/libswscale/ppc/Makefile b/libswscale/ppc/Makefile index d1b596e..2482893 100644 --- a/libswscale/ppc/Makefile +++ b/libswscale/ppc/Makefile @@ -1,3 +1,4 @@ OBJS += ppc/swscale_altivec.o \ +ppc/input_vsx.o \ ppc/yuv2rgb_altivec.o \ ppc/yuv2yuv_altivec.o \ diff --git a/libswscale/ppc/input_vsx.c b/libswscale/ppc/input_vsx.c new file mode 100644 index 000..d977a32 --- /dev/null +++ b/libswscale/ppc/input_vsx.c @@ -0,0 +1,437 @@ +/* + * Copyright (C) 2016 Dan Parrot + * + * 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 +#include +#include +#include + +#include "libavutil/avutil.h" +#include "libavutil/bswap.h" +#include "libavutil/cpu.h" +#include "libavutil/intreadwrite.h" +#include "libavutil/mathematics.h" +#include "libavutil/pixdesc.h" +#include "libavutil/avassert.h" +#include "config.h" +#include "libswscale/rgb2rgb.h" +#include "libswscale/swscale.h" +#include "libswscale/swscale_internal.h" + +#if HAVE_VSX + +static void abgrToA_c_vsx(uint8_t *_dst, const uint8_t *src, const uint8_t *unused1, const uint8_t *unused2, + int width, uint32_t *unused) +{ +int16_t *dst = (int16_t *)_dst; +int i, width_adj, frag_len; + +uintptr_t src_addr = (uintptr_t)src; +uintptr_t dst_addr = (uintptr_t)dst; + +// compute integral number of vector-length items and length of final fragment +width_adj = width >> 3; +width_adj = width_adj << 3; +frag_len = width - width_adj; + +for ( i = 0; i < width_adj; i += 8) { +vector int v_rd0 = vec_vsx_ld(0, (int *)src_addr); +vector int v_rd1 = vec_vsx_ld(0, (int *)(src_addr + 16)); + +v_rd0 = vec_and(v_rd0, vec_splats(0x0ff)); +v_rd1 = vec_and(v_rd1, vec_splats(0x0ff)); + +v_rd0 = vec_sl(v_rd0, vec_splats((unsigned)6)); +v_rd1 = vec_sl(v_rd1, vec_splats((unsigned)6)); + +vector int v_dst = vec_perm(v_rd0, v_rd1, ((vector unsigned char) + {0, 1, 4, 5, 8, 9, 12, 13, 16, 17, 20, 21, 24, 25, 28, 29})); +vec_vsx_st((vector unsigned char)v_dst, 0, (unsigned char *)dst_addr); + +src_addr += 32; +dst_addr += 16; +} + +for (i=width_adj; i< width_adj + frag_len; i++) { +dst[i]= src[4*i]<<6; +} +} + +static void rgbaToA_c_vsx(uint8_t *_dst, const uint8_t *src, const uint8_t *unused1, const uint8_t *unused2, + int width, uint32_t *unused) +{ +int16_t *dst = (int16_t *)_dst; +int i, width_adj, frag_len; + +uintptr_t src_addr = (uintptr_t)src; +uintptr_t dst_addr = (uintptr_t)dst; + +// compute integral number of vector-length items and length of final fragment +width_adj = width >> 3; +width_adj = width_adj << 3; +frag_len = width - width_adj; + +for ( i = 0; i < width_adj; i += 8) { +vector int v_rd0 = vec_vsx_ld(0, (int *)src_addr); +vector int v_rd1 = vec_vsx_ld(0, (int *)(src_addr + 16)); + +v_rd0 = vec_sld(v_rd0, v_rd0, 13); +v_rd1 = vec_sld(v_rd1, v_rd1, 13); + +v_rd0 = vec_and(v_rd0, vec_splats(0x0ff)); +v_rd1 = vec_and(v_rd1, vec_splats(0x0ff)); + +v_rd0 = vec_sl(v_rd0, vec_splats((unsigned)6)); +
[FFmpeg-cvslog] avformat/mov: Skip non-key frames if AVDISCARD_NONKEY is set.
ffmpeg | branch: master | Vadim Kalinsky | Tue Jun 28 14:09:46 2016 -0400| [e370aad67ddb15033f656f6b1120c030c759f30b] | committer: Michael Niedermayer avformat/mov: Skip non-key frames if AVDISCARD_NONKEY is set. Github: Closes #222 > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=e370aad67ddb15033f656f6b1120c030c759f30b --- libavformat/mov.c |6 ++ 1 file changed, 6 insertions(+) diff --git a/libavformat/mov.c b/libavformat/mov.c index a929f74..485bb0b 100644 --- a/libavformat/mov.c +++ b/libavformat/mov.c @@ -5224,6 +5224,12 @@ static int mov_read_packet(AVFormatContext *s, AVPacket *pkt) sc->current_sample -= should_retry(sc->pb, ret64); return AVERROR_INVALIDDATA; } + +if( st->discard == AVDISCARD_NONKEY && 0==(sample->flags & AVINDEX_KEYFRAME) ) { +av_log(mov->fc, AV_LOG_DEBUG, "Nonkey frame from stream %d discarded due to AVDISCARD_NONKEY\n", sc->ffindex); +goto retry; +} + ret = av_get_packet(sc->pb, pkt, sample->size); if (ret < 0) { sc->current_sample -= should_retry(sc->pb, ret); ___ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog
[FFmpeg-cvslog] libavcodec/exr : fix decoding piz float file.
ffmpeg | branch: master | Martin Vignali | Tue Jun 28 13:23:43 2016 +0200| [d9e1e08133234dc4501413f0e3211f3a268049bc] | committer: Michael Niedermayer libavcodec/exr : fix decoding piz float file. fix ticket #5674 the size of data to process in piz_uncompress, is now calc using the pixel type of each channel. the data reorganization, alos take care about the size of each channel Reviewed-by: Paul B Mahol Signed-off-by: Michael Niedermayer > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=d9e1e08133234dc4501413f0e3211f3a268049bc --- libavcodec/exr.c | 37 +++-- 1 file changed, 27 insertions(+), 10 deletions(-) diff --git a/libavcodec/exr.c b/libavcodec/exr.c index c87187c..cabe329 100644 --- a/libavcodec/exr.c +++ b/libavcodec/exr.c @@ -749,6 +749,9 @@ static int piz_uncompress(EXRContext *s, const uint8_t *src, int ssize, uint16_t *tmp = (uint16_t *)td->tmp; uint8_t *out; int ret, i, j; +int pixel_half_size;/* 1 for half, 2 for float and uint32 */ +EXRChannel *channel; +int tmp_offset; if (!td->bitmap) td->bitmap = av_malloc(BITMAP_SIZE); @@ -781,24 +784,38 @@ static int piz_uncompress(EXRContext *s, const uint8_t *src, int ssize, ptr = tmp; for (i = 0; i < s->nb_channels; i++) { -EXRChannel *channel = &s->channels[i]; -int size = channel->pixel_type; +channel = &s->channels[i]; -for (j = 0; j < size; j++) -wav_decode(ptr + j, td->xsize, size, td->ysize, - td->xsize * size, maxval); -ptr += td->xsize * td->ysize * size; +if (channel->pixel_type == EXR_HALF) +pixel_half_size = 1; +else +pixel_half_size = 2; + +for (j = 0; j < pixel_half_size; j++) +wav_decode(ptr + j, td->xsize, pixel_half_size, td->ysize, + td->xsize * pixel_half_size, maxval); +ptr += td->xsize * td->ysize * pixel_half_size; } apply_lut(td->lut, tmp, dsize / sizeof(uint16_t)); out = td->uncompressed_data; -for (i = 0; i < td->ysize; i++) +for (i = 0; i < td->ysize; i++) { +tmp_offset = 0; for (j = 0; j < s->nb_channels; j++) { -uint16_t *in = tmp + j * td->xsize * td->ysize + i * td->xsize; -memcpy(out, in, td->xsize * 2); -out += td->xsize * 2; +uint16_t *in; +EXRChannel *channel = &s->channels[j]; +if (channel->pixel_type == EXR_HALF) +pixel_half_size = 1; +else +pixel_half_size = 2; + +in = tmp + tmp_offset * td->xsize * td->ysize + i * td->xsize * pixel_half_size; +tmp_offset += pixel_half_size; +memcpy(out, in, td->xsize * 2 * pixel_half_size); +out += td->xsize * 2 * pixel_half_size; } +} return 0; } ___ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog
[FFmpeg-cvslog] avformat/avformat: Move new field to the end of AVStream
ffmpeg | branch: master | Michael Niedermayer | Thu Jun 30 14:02:26 2016 +0200| [c1c7e0abb0c513a5f35b29126175b99fc9ca0254] | committer: Michael Niedermayer avformat/avformat: Move new field to the end of AVStream This fixes part of Ticket5676 This fixes kodi, mpv, chromium and ffplay build against 3.0 and linked to 3.1 This is a similar ABI fix to 1eb43af1a0e542ad83dcbf327197785d815fc42d Approved-by: BBB Approved-by: jamrial Approved-by: BtbN Approved-by: nevcairiel Signed-off-by: Michael Niedermayer > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=c1c7e0abb0c513a5f35b29126175b99fc9ca0254 --- libavformat/avformat.h | 22 +++--- libavformat/version.h |4 ++-- 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/libavformat/avformat.h b/libavformat/avformat.h index 876f1e3..818184e 100644 --- a/libavformat/avformat.h +++ b/libavformat/avformat.h @@ -985,17 +985,6 @@ typedef struct AVStream { int event_flags; #define AVSTREAM_EVENT_FLAG_METADATA_UPDATED 0x0001 ///< The call resulted in updated metadata. -/* - * Codec parameters associated with this stream. Allocated and freed by - * libavformat in avformat_new_stream() and avformat_free_context() - * respectively. - * - * - demuxing: filled by libavformat on stream creation or in - * avformat_find_stream_info() - * - muxing: filled by the caller before avformat_write_header() - */ -AVCodecParameters *codecpar; - /* * All fields below this line are not part of the public API. They * may not be used outside of libavformat and can be changed and @@ -1217,6 +1206,17 @@ typedef struct AVStream { * Must not be accessed in any way by callers. */ AVStreamInternal *internal; + +/* + * Codec parameters associated with this stream. Allocated and freed by + * libavformat in avformat_new_stream() and avformat_free_context() + * respectively. + * + * - demuxing: filled by libavformat on stream creation or in + * avformat_find_stream_info() + * - muxing: filled by the caller before avformat_write_header() + */ +AVCodecParameters *codecpar; } AVStream; AVRational av_stream_get_r_frame_rate(const AVStream *s); diff --git a/libavformat/version.h b/libavformat/version.h index 544d436..47a8afb 100644 --- a/libavformat/version.h +++ b/libavformat/version.h @@ -32,8 +32,8 @@ // Major bumping may affect Ticket5467, 5421, 5451(compatibility with Chromium) // Also please add any ticket numbers that you belive might be affected here #define LIBAVFORMAT_VERSION_MAJOR 57 -#define LIBAVFORMAT_VERSION_MINOR 40 -#define LIBAVFORMAT_VERSION_MICRO 101 +#define LIBAVFORMAT_VERSION_MINOR 41 +#define LIBAVFORMAT_VERSION_MICRO 100 #define LIBAVFORMAT_VERSION_INT AV_VERSION_INT(LIBAVFORMAT_VERSION_MAJOR, \ LIBAVFORMAT_VERSION_MINOR, \ ___ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog
[FFmpeg-cvslog] avformat/utils: update deprecated AVStream-> codec when the context is updated
ffmpeg | branch: master | Hendrik Leppkes | Thu Jun 30 14:10:42 2016 +0200| [c2e13d2ecd388bab28e743c34ed146c5ed213fc9] | committer: Michael Niedermayer avformat/utils: update deprecated AVStream->codec when the context is updated This ensures the AVStream->codec entry is kept in sync when new streams are discovered mid-playback or changes to the context occur from other sources. Fixes trac 5678. Signed-off-by: Michael Niedermayer > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=c2e13d2ecd388bab28e743c34ed146c5ed213fc9 --- libavformat/utils.c |9 + 1 file changed, 9 insertions(+) diff --git a/libavformat/utils.c b/libavformat/utils.c index 6f343f2..d2a709c 100644 --- a/libavformat/utils.c +++ b/libavformat/utils.c @@ -1483,6 +1483,15 @@ static int read_frame_internal(AVFormatContext *s, AVPacket *pkt) if (ret < 0) return ret; +#if FF_API_LAVF_AVCTX +FF_DISABLE_DEPRECATION_WARNINGS +/* update deprecated public codec context */ +ret = avcodec_parameters_to_context(st->codec, st->codecpar); +if (ret < 0) +return ret; +FF_ENABLE_DEPRECATION_WARNINGS +#endif + st->internal->need_context_update = 0; } ___ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog
[FFmpeg-cvslog] avutil/frame: Move new field to the end of AVFrame
ffmpeg | branch: master | Michael Niedermayer | Thu Jun 30 14:02:27 2016 +0200| [042fb69deb5303d147b21ab1061387fb6e0c7afc] | committer: Michael Niedermayer avutil/frame: Move new field to the end of AVFrame This fixes part of Ticket5676 This fixes kodi, mpv, chromium and ffplay build against 3.0 and linked to 3.1 This is a similar ABI fix to 1eb43af1a0e542ad83dcbf327197785d815fc42d Approved-by: BBB Approved-by: jamrial Approved-by: BtbN Approved-by: nevcairiel Signed-off-by: Michael Niedermayer > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=042fb69deb5303d147b21ab1061387fb6e0c7afc --- libavutil/frame.h | 11 +-- libavutil/version.h |2 +- 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/libavutil/frame.h b/libavutil/frame.h index 44adec4..2b5c332 100644 --- a/libavutil/frame.h +++ b/libavutil/frame.h @@ -428,12 +428,6 @@ typedef struct AVFrame { enum AVChromaLocation chroma_location; /** - * For hwaccel-format frames, this should be a reference to the - * AVHWFramesContext describing the frame. - */ -AVBufferRef *hw_frames_ctx; - -/** * frame timestamp estimated using various heuristics, in stream time base * Code outside libavutil should access this field using: * av_frame_get_best_effort_timestamp(frame) @@ -524,6 +518,11 @@ typedef struct AVFrame { */ AVBufferRef *qp_table_buf; #endif +/** + * For hwaccel-format frames, this should be a reference to the + * AVHWFramesContext describing the frame. + */ +AVBufferRef *hw_frames_ctx; } AVFrame; /** diff --git a/libavutil/version.h b/libavutil/version.h index aa10622..07618fc 100644 --- a/libavutil/version.h +++ b/libavutil/version.h @@ -64,7 +64,7 @@ */ #define LIBAVUTIL_VERSION_MAJOR 55 -#define LIBAVUTIL_VERSION_MINOR 27 +#define LIBAVUTIL_VERSION_MINOR 28 #define LIBAVUTIL_VERSION_MICRO 100 #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] avutil/frame: Move new field to the end of AVFrame
ffmpeg | branch: release/3.1 | Michael Niedermayer | Thu Jun 30 14:02:27 2016 +0200| [77473002898f1dce18761c8a9bca48a8fe888d2e] | committer: Michael Niedermayer avutil/frame: Move new field to the end of AVFrame This fixes part of Ticket5676 This fixes kodi, mpv, chromium and ffplay build against 3.0 and linked to 3.1 This is a similar ABI fix to 1eb43af1a0e542ad83dcbf327197785d815fc42d Approved-by: BBB Approved-by: jamrial Approved-by: BtbN Approved-by: nevcairiel Signed-off-by: Michael Niedermayer (cherry picked from commit 042fb69deb5303d147b21ab1061387fb6e0c7afc) Signed-off-by: Michael Niedermayer > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=77473002898f1dce18761c8a9bca48a8fe888d2e --- libavutil/frame.h | 11 +-- libavutil/version.h |2 +- 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/libavutil/frame.h b/libavutil/frame.h index 44adec4..2b5c332 100644 --- a/libavutil/frame.h +++ b/libavutil/frame.h @@ -428,12 +428,6 @@ typedef struct AVFrame { enum AVChromaLocation chroma_location; /** - * For hwaccel-format frames, this should be a reference to the - * AVHWFramesContext describing the frame. - */ -AVBufferRef *hw_frames_ctx; - -/** * frame timestamp estimated using various heuristics, in stream time base * Code outside libavutil should access this field using: * av_frame_get_best_effort_timestamp(frame) @@ -524,6 +518,11 @@ typedef struct AVFrame { */ AVBufferRef *qp_table_buf; #endif +/** + * For hwaccel-format frames, this should be a reference to the + * AVHWFramesContext describing the frame. + */ +AVBufferRef *hw_frames_ctx; } AVFrame; /** diff --git a/libavutil/version.h b/libavutil/version.h index aa10622..07618fc 100644 --- a/libavutil/version.h +++ b/libavutil/version.h @@ -64,7 +64,7 @@ */ #define LIBAVUTIL_VERSION_MAJOR 55 -#define LIBAVUTIL_VERSION_MINOR 27 +#define LIBAVUTIL_VERSION_MINOR 28 #define LIBAVUTIL_VERSION_MICRO 100 #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] avformat/avformat: Move new field to the end of AVStream
ffmpeg | branch: release/3.1 | Michael Niedermayer | Thu Jun 30 14:02:26 2016 +0200| [f617b94c233fb070810c03478968c3e036787564] | committer: Michael Niedermayer avformat/avformat: Move new field to the end of AVStream This fixes part of Ticket5676 This fixes kodi, mpv, chromium and ffplay build against 3.0 and linked to 3.1 This is a similar ABI fix to 1eb43af1a0e542ad83dcbf327197785d815fc42d Approved-by: BBB Approved-by: jamrial Approved-by: BtbN Approved-by: nevcairiel Signed-off-by: Michael Niedermayer (cherry picked from commit c1c7e0abb0c513a5f35b29126175b99fc9ca0254) Signed-off-by: Michael Niedermayer > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=f617b94c233fb070810c03478968c3e036787564 --- libavformat/avformat.h | 22 +++--- libavformat/version.h |4 ++-- 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/libavformat/avformat.h b/libavformat/avformat.h index 876f1e3..818184e 100644 --- a/libavformat/avformat.h +++ b/libavformat/avformat.h @@ -985,17 +985,6 @@ typedef struct AVStream { int event_flags; #define AVSTREAM_EVENT_FLAG_METADATA_UPDATED 0x0001 ///< The call resulted in updated metadata. -/* - * Codec parameters associated with this stream. Allocated and freed by - * libavformat in avformat_new_stream() and avformat_free_context() - * respectively. - * - * - demuxing: filled by libavformat on stream creation or in - * avformat_find_stream_info() - * - muxing: filled by the caller before avformat_write_header() - */ -AVCodecParameters *codecpar; - /* * All fields below this line are not part of the public API. They * may not be used outside of libavformat and can be changed and @@ -1217,6 +1206,17 @@ typedef struct AVStream { * Must not be accessed in any way by callers. */ AVStreamInternal *internal; + +/* + * Codec parameters associated with this stream. Allocated and freed by + * libavformat in avformat_new_stream() and avformat_free_context() + * respectively. + * + * - demuxing: filled by libavformat on stream creation or in + * avformat_find_stream_info() + * - muxing: filled by the caller before avformat_write_header() + */ +AVCodecParameters *codecpar; } AVStream; AVRational av_stream_get_r_frame_rate(const AVStream *s); diff --git a/libavformat/version.h b/libavformat/version.h index 544d436..47a8afb 100644 --- a/libavformat/version.h +++ b/libavformat/version.h @@ -32,8 +32,8 @@ // Major bumping may affect Ticket5467, 5421, 5451(compatibility with Chromium) // Also please add any ticket numbers that you belive might be affected here #define LIBAVFORMAT_VERSION_MAJOR 57 -#define LIBAVFORMAT_VERSION_MINOR 40 -#define LIBAVFORMAT_VERSION_MICRO 101 +#define LIBAVFORMAT_VERSION_MINOR 41 +#define LIBAVFORMAT_VERSION_MICRO 100 #define LIBAVFORMAT_VERSION_INT AV_VERSION_INT(LIBAVFORMAT_VERSION_MAJOR, \ LIBAVFORMAT_VERSION_MINOR, \ ___ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog
[FFmpeg-cvslog] libavcodec/exr : fix decoding piz float file.
ffmpeg | branch: release/3.1 | Martin Vignali | Tue Jun 28 13:23:43 2016 +0200| [37c83b53730aed3205dab3055aefffa642763ea4] | committer: Michael Niedermayer libavcodec/exr : fix decoding piz float file. fix ticket #5674 the size of data to process in piz_uncompress, is now calc using the pixel type of each channel. the data reorganization, alos take care about the size of each channel Reviewed-by: Paul B Mahol Signed-off-by: Michael Niedermayer (cherry picked from commit d9e1e08133234dc4501413f0e3211f3a268049bc) Signed-off-by: Michael Niedermayer > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=37c83b53730aed3205dab3055aefffa642763ea4 --- libavcodec/exr.c | 37 +++-- 1 file changed, 27 insertions(+), 10 deletions(-) diff --git a/libavcodec/exr.c b/libavcodec/exr.c index c87187c..cabe329 100644 --- a/libavcodec/exr.c +++ b/libavcodec/exr.c @@ -749,6 +749,9 @@ static int piz_uncompress(EXRContext *s, const uint8_t *src, int ssize, uint16_t *tmp = (uint16_t *)td->tmp; uint8_t *out; int ret, i, j; +int pixel_half_size;/* 1 for half, 2 for float and uint32 */ +EXRChannel *channel; +int tmp_offset; if (!td->bitmap) td->bitmap = av_malloc(BITMAP_SIZE); @@ -781,24 +784,38 @@ static int piz_uncompress(EXRContext *s, const uint8_t *src, int ssize, ptr = tmp; for (i = 0; i < s->nb_channels; i++) { -EXRChannel *channel = &s->channels[i]; -int size = channel->pixel_type; +channel = &s->channels[i]; -for (j = 0; j < size; j++) -wav_decode(ptr + j, td->xsize, size, td->ysize, - td->xsize * size, maxval); -ptr += td->xsize * td->ysize * size; +if (channel->pixel_type == EXR_HALF) +pixel_half_size = 1; +else +pixel_half_size = 2; + +for (j = 0; j < pixel_half_size; j++) +wav_decode(ptr + j, td->xsize, pixel_half_size, td->ysize, + td->xsize * pixel_half_size, maxval); +ptr += td->xsize * td->ysize * pixel_half_size; } apply_lut(td->lut, tmp, dsize / sizeof(uint16_t)); out = td->uncompressed_data; -for (i = 0; i < td->ysize; i++) +for (i = 0; i < td->ysize; i++) { +tmp_offset = 0; for (j = 0; j < s->nb_channels; j++) { -uint16_t *in = tmp + j * td->xsize * td->ysize + i * td->xsize; -memcpy(out, in, td->xsize * 2); -out += td->xsize * 2; +uint16_t *in; +EXRChannel *channel = &s->channels[j]; +if (channel->pixel_type == EXR_HALF) +pixel_half_size = 1; +else +pixel_half_size = 2; + +in = tmp + tmp_offset * td->xsize * td->ysize + i * td->xsize * pixel_half_size; +tmp_offset += pixel_half_size; +memcpy(out, in, td->xsize * 2 * pixel_half_size); +out += td->xsize * 2 * pixel_half_size; } +} return 0; } ___ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog
[FFmpeg-cvslog] avformat/utils: update deprecated AVStream-> codec when the context is updated
ffmpeg | branch: release/3.1 | Hendrik Leppkes | Thu Jun 30 14:10:42 2016 +0200| [79af094b9304676a2bd83a5172fac97f0d964c1a] | committer: Michael Niedermayer avformat/utils: update deprecated AVStream->codec when the context is updated This ensures the AVStream->codec entry is kept in sync when new streams are discovered mid-playback or changes to the context occur from other sources. Fixes trac 5678. Signed-off-by: Michael Niedermayer (cherry picked from commit c2e13d2ecd388bab28e743c34ed146c5ed213fc9) Signed-off-by: Michael Niedermayer > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=79af094b9304676a2bd83a5172fac97f0d964c1a --- libavformat/utils.c |9 + 1 file changed, 9 insertions(+) diff --git a/libavformat/utils.c b/libavformat/utils.c index 6f343f2..d2a709c 100644 --- a/libavformat/utils.c +++ b/libavformat/utils.c @@ -1483,6 +1483,15 @@ static int read_frame_internal(AVFormatContext *s, AVPacket *pkt) if (ret < 0) return ret; +#if FF_API_LAVF_AVCTX +FF_DISABLE_DEPRECATION_WARNINGS +/* update deprecated public codec context */ +ret = avcodec_parameters_to_context(st->codec, st->codecpar); +if (ret < 0) +return ret; +FF_ENABLE_DEPRECATION_WARNINGS +#endif + st->internal->need_context_update = 0; } ___ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog
[FFmpeg-cvslog] doc/APIchanges: document the lavu/lavf field moves
ffmpeg | branch: master | Michael Niedermayer | Thu Jun 30 18:12:41 2016 +0200| [86fec7a7e861f0ad3c95cb27271267ec143ff754] | committer: Michael Niedermayer doc/APIchanges: document the lavu/lavf field moves Based-on: patch by James Almer Signed-off-by: Michael Niedermayer > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=86fec7a7e861f0ad3c95cb27271267ec143ff754 --- doc/APIchanges |8 1 file changed, 8 insertions(+) diff --git a/doc/APIchanges b/doc/APIchanges index 47106c2..bca8992 100644 --- a/doc/APIchanges +++ b/doc/APIchanges @@ -15,6 +15,14 @@ libavutil: 2015-08-28 API changes, most recent first: +2016-06-30 - c1c7e0ab - lavf 57.41.100 - avformat.h + Moved codecpar field from AVStream to the end of the struct, so that + the following private fields are in the same location as in FFmpeg 3.0 (lavf 57.25.100). + +2016-06-30 - 042fb69d - lavu 55.28.100 - frame.h + Moved hw_frames_ctx field from AVFrame to the end of the struct, so that + the following private fields are in the same location as in FFmpeg 3.0 (lavu 55.17.103). + 2016-06-29 - xxx - lavfi 6.47.100 - avfilter.h Fix accidental ABI breakage in AVFilterContext. ABI was broken in 8688d3a, lavfi 6.42.100 and released as ffmpeg 3.1. ___ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog
[FFmpeg-cvslog] Update for 3.1.1
ffmpeg | branch: release/3.1 | Michael Niedermayer | Fri Jul 1 02:13:51 2016 +0200| [fc25481d17bec3c7191d933fcc25e87c0a20a3a1] | committer: Michael Niedermayer Update for 3.1.1 Signed-off-by: Michael Niedermayer > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=fc25481d17bec3c7191d933fcc25e87c0a20a3a1 --- Changelog| 14 ++ RELEASE |2 +- doc/Doxyfile |2 +- 3 files changed, 16 insertions(+), 2 deletions(-) diff --git a/Changelog b/Changelog index 99cdb80..2a87916 100644 --- a/Changelog +++ b/Changelog @@ -4,6 +4,20 @@ releases are sorted from youngest to oldest. version : +version 3.1.1: +- doc/APIchanges: document the lavu/lavf field moves +- avformat/avformat: Move new field to the end of AVStream +- avformat/utils: update deprecated AVStream->codec when the context is updated +- avutil/frame: Move new field to the end of AVFrame +- libavcodec/exr : fix decoding piz float file. +- avformat/mov: Check sample size +- lavfi: Move new field to the end of AVFilterContext +- lavfi: Move new field to the end of AVFilterLink +- ffplay: Fix usage of private lavfi API +- lavc/mediacodecdec_h264: add missing NAL headers to SPS/PPS buffers +- lavc/pnm_parser: disable parsing for text based PNMs + + version 3.1: - DXVA2-accelerated HEVC Main10 decoding - fieldhint filter diff --git a/RELEASE b/RELEASE index 8c50098..94ff29c 100644 --- a/RELEASE +++ b/RELEASE @@ -1 +1 @@ -3.1 +3.1.1 diff --git a/doc/Doxyfile b/doc/Doxyfile index 53f9b25..68c0679 100644 --- a/doc/Doxyfile +++ b/doc/Doxyfile @@ -31,7 +31,7 @@ PROJECT_NAME = FFmpeg # This could be handy for archiving the generated documentation or # if some version control system is used. -PROJECT_NUMBER = 3.1 +PROJECT_NUMBER = 3.1.1 # With the PROJECT_LOGO tag one can specify a logo or icon that is included # in the documentation. The maximum height of the logo should not exceed 55 ___ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog
[FFmpeg-cvslog] doc/APIchanges: document the lavu/lavf field moves
ffmpeg | branch: release/3.1 | Michael Niedermayer | Thu Jun 30 18:12:41 2016 +0200| [5c695ce90386e7871fabba2219d4076e70a78d01] | committer: Michael Niedermayer doc/APIchanges: document the lavu/lavf field moves Based-on: patch by James Almer Signed-off-by: Michael Niedermayer (cherry picked from commit 86fec7a7e861f0ad3c95cb27271267ec143ff754) Signed-off-by: Michael Niedermayer > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=5c695ce90386e7871fabba2219d4076e70a78d01 --- doc/APIchanges |8 1 file changed, 8 insertions(+) diff --git a/doc/APIchanges b/doc/APIchanges index 47106c2..bca8992 100644 --- a/doc/APIchanges +++ b/doc/APIchanges @@ -15,6 +15,14 @@ libavutil: 2015-08-28 API changes, most recent first: +2016-06-30 - c1c7e0ab - lavf 57.41.100 - avformat.h + Moved codecpar field from AVStream to the end of the struct, so that + the following private fields are in the same location as in FFmpeg 3.0 (lavf 57.25.100). + +2016-06-30 - 042fb69d - lavu 55.28.100 - frame.h + Moved hw_frames_ctx field from AVFrame to the end of the struct, so that + the following private fields are in the same location as in FFmpeg 3.0 (lavu 55.17.103). + 2016-06-29 - xxx - lavfi 6.47.100 - avfilter.h Fix accidental ABI breakage in AVFilterContext. ABI was broken in 8688d3a, lavfi 6.42.100 and released as ffmpeg 3.1. ___ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog
[FFmpeg-cvslog] doc/APIchanges: fill in missing git hash
ffmpeg | branch: release/3.1 | Michael Niedermayer | Fri Jul 1 02:42:03 2016 +0200| [ce36e74e75751c721185fbebaa4ee8714b44c5a5] | committer: Michael Niedermayer doc/APIchanges: fill in missing git hash Signed-off-by: Michael Niedermayer (cherry picked from commit 2a8dadb38f6b458ffe3ac2037bace7c3892cb282) Signed-off-by: Michael Niedermayer > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=ce36e74e75751c721185fbebaa4ee8714b44c5a5 --- doc/APIchanges |2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/APIchanges b/doc/APIchanges index bca8992..52cd48c 100644 --- a/doc/APIchanges +++ b/doc/APIchanges @@ -23,7 +23,7 @@ API changes, most recent first: Moved hw_frames_ctx field from AVFrame to the end of the struct, so that the following private fields are in the same location as in FFmpeg 3.0 (lavu 55.17.103). -2016-06-29 - xxx - lavfi 6.47.100 - avfilter.h +2016-06-29 - 1a751455 - lavfi 6.47.100 - avfilter.h Fix accidental ABI breakage in AVFilterContext. ABI was broken in 8688d3a, lavfi 6.42.100 and released as ffmpeg 3.1. ___ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog
[FFmpeg-cvslog] doc/APIchanges: fill in missing git hash
ffmpeg | branch: master | Michael Niedermayer | Fri Jul 1 02:42:03 2016 +0200| [2a8dadb38f6b458ffe3ac2037bace7c3892cb282] | committer: Michael Niedermayer doc/APIchanges: fill in missing git hash Signed-off-by: Michael Niedermayer > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=2a8dadb38f6b458ffe3ac2037bace7c3892cb282 --- doc/APIchanges |2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/APIchanges b/doc/APIchanges index bca8992..52cd48c 100644 --- a/doc/APIchanges +++ b/doc/APIchanges @@ -23,7 +23,7 @@ API changes, most recent first: Moved hw_frames_ctx field from AVFrame to the end of the struct, so that the following private fields are in the same location as in FFmpeg 3.0 (lavu 55.17.103). -2016-06-29 - xxx - lavfi 6.47.100 - avfilter.h +2016-06-29 - 1a751455 - lavfi 6.47.100 - avfilter.h Fix accidental ABI breakage in AVFilterContext. ABI was broken in 8688d3a, lavfi 6.42.100 and released as ffmpeg 3.1. ___ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog
[FFmpeg-cvslog] Tag n3.1.1 : FFmpeg 3.1.1 release
[ffmpeg] [branch: refs/tags/n3.1.1] Tag:4a3ff02f0fa0a710802712dbd07828918df53a3a > http://git.videolan.org/gitweb.cgi/ffmpeg.git?a=tag;h=4a3ff02f0fa0a710802712dbd07828918df53a3a Tagger: Michael Niedermayer Date: Fri Jul 1 02:59:17 2016 +0200 FFmpeg 3.1.1 release ___ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog
[FFmpeg-cvslog] [ffmpeg-web] branch master updated. 463f56e web/download: add 3.1.1
The branch, master has been updated via 463f56ef561f4990038eb43f63f40fc98337fc30 (commit) from 9d7d01121da362f02a4edb6ceddecad383e8f655 (commit) - Log - commit 463f56ef561f4990038eb43f63f40fc98337fc30 Author: Michael Niedermayer AuthorDate: Fri Jul 1 03:47:38 2016 +0200 Commit: Michael Niedermayer CommitDate: Fri Jul 1 03:47:38 2016 +0200 web/download: add 3.1.1 diff --git a/src/download b/src/download index ceeb2f9..82c8843 100644 --- a/src/download +++ b/src/download @@ -1,10 +1,10 @@ -http://ffmpeg.org/releases/ffmpeg-3.1.tar.bz2"; class="btn btn-success"> +http://ffmpeg.org/releases/ffmpeg-3.1.1.tar.bz2"; class="btn btn-success"> Download - ffmpeg-3.1.tar.bz2 + ffmpeg-3.1.1.tar.bz2 More releases @@ -270,20 +270,20 @@ - FFmpeg 3.1 "Laplace" + FFmpeg 3.1.1 "Laplace" -3.1 was released on 2016-06-27. It is the latest stable FFmpeg release +3.1.1 was released on 2016-07-01. It is the latest stable FFmpeg release from the 3.1 release branch, which was cut from master on 2016-06-26. It includes the following library versions: -libavutil 55. 27.100 +libavutil 55. 28.100 libavcodec 57. 48.101 -libavformat57. 40.101 +libavformat57. 41.100 libavdevice57. 0.101 -libavfilter 6. 46.102 +libavfilter 6. 47.100 libavresample 3. 0. 0 libswscale 4. 1.100 libswresample 2. 1.100 @@ -291,19 +291,19 @@ libpostproc54. 0.100 - Download xz tarball - PGP signature + Download xz tarball + PGP signature - Download bzip2 tarball - PGP signature + Download bzip2 tarball + PGP signature - Download gzip tarball - PGP signature + Download gzip tarball + PGP signature - https://git.ffmpeg.org/gitweb/ffmpeg.git/shortlog/n3.1";>Changelog + https://git.ffmpeg.org/gitweb/ffmpeg.git/shortlog/n3.1.1";>Changelog https://git.ffmpeg.org/gitweb/ffmpeg.git/blob/refs/heads/release/3.1:/RELEASE_NOTES";>Release Notes --- Summary of changes: src/download | 28 ++-- 1 file changed, 14 insertions(+), 14 deletions(-) hooks/post-receive -- ___ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog
[FFmpeg-cvslog] avcodec/libopenjpegenc: Set numresolutions by default to a value that is not too large
ffmpeg | branch: release/3.0 | Michael Niedermayer | Sun Jun 26 17:34:37 2016 +0200| [96f5019bde0f6719133a36433fec465b8538df25] | committer: James Almer avcodec/libopenjpegenc: Set numresolutions by default to a value that is not too large Fixes issues with libopenjpeg 2.1 Signed-off-by: Michael Niedermayer (cherry picked from commit e9394ca63dab3434bc8e869de019ecd86cb604ac) > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=96f5019bde0f6719133a36433fec465b8538df25 --- libavcodec/libopenjpegenc.c |8 +++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/libavcodec/libopenjpegenc.c b/libavcodec/libopenjpegenc.c index b67c320..058ca36 100644 --- a/libavcodec/libopenjpegenc.c +++ b/libavcodec/libopenjpegenc.c @@ -352,6 +352,12 @@ static av_cold int libopenjpeg_encode_init(AVCodecContext *avctx) ctx->enc_params.cp_cinema = ctx->cinema_mode; #endif +if (!ctx->numresolution) { +ctx->numresolution = 6; +while (FFMIN(avctx->width, avctx->height) >> ctx->numresolution < 1) +ctx->numresolution --; +} + ctx->enc_params.mode = !!avctx->global_quality; ctx->enc_params.prog_order = ctx->prog_order; ctx->enc_params.numresolution = ctx->numresolution; @@ -814,7 +820,7 @@ static const AVOption options[] = { { "rpcl", NULL,0, AV_OPT_TYPE_CONST, { .i64 = OPJ(RPCL)}, 0, 0, VE, "prog_order" }, { "pcrl", NULL,0, AV_OPT_TYPE_CONST, { .i64 = OPJ(PCRL)}, 0, 0, VE, "prog_order" }, { "cprl", NULL,0, AV_OPT_TYPE_CONST, { .i64 = OPJ(CPRL)}, 0, 0, VE, "prog_order" }, -{ "numresolution", NULL,OFFSET(numresolution), AV_OPT_TYPE_INT, { .i64 = 6 }, 1, INT_MAX, VE }, +{ "numresolution", NULL,OFFSET(numresolution), AV_OPT_TYPE_INT, { .i64 = 0 }, 0, INT_MAX, VE }, { "numlayers", NULL,OFFSET(numlayers), AV_OPT_TYPE_INT, { .i64 = 1 }, 1, 10, VE }, { "disto_alloc", NULL,OFFSET(disto_alloc), AV_OPT_TYPE_INT, { .i64 = 1 }, 0, 1, VE }, { "fixed_alloc", NULL,OFFSET(fixed_alloc), AV_OPT_TYPE_INT, { .i64 = 0 }, 0, 1, VE }, ___ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog