diff options
author | Michael Niedermayer <michaelni@gmx.at> | 2012-04-01 00:36:43 +0200 |
---|---|---|
committer | Michael Niedermayer <michaelni@gmx.at> | 2012-04-01 00:36:43 +0200 |
commit | 2f7bd3b5162c240e62c11cf0373342fa89f26c8f (patch) | |
tree | 1d0f0aeb6b2c6acc811f11eca9fbeb16c451ea2c | |
parent | 5216245a2c5ed8140d99f14fcc148fbb6db9831e (diff) | |
parent | 420d1df2e2a857eae45fa947e16eae7494793d57 (diff) | |
download | ffmpeg-2f7bd3b5162c240e62c11cf0373342fa89f26c8f.tar.gz |
Merge remote-tracking branch 'qatar/master'
* qatar/master:
apedec: check bits <= 32.
cavs: Remove unused code.
oggenc: fix condition when not to flush due to keyframe granule.
oggenc: add pagesize option to set preferred page size
libspeexdec: set frame size in libspeex_decode_init()
smacker audio: sign-extend the initial 16-bit predicted value
Conflicts:
libavcodec/apedec.c
libavcodec/libspeexdec.c
libavformat/oggenc.c
Merged-by: Michael Niedermayer <michaelni@gmx.at>
-rw-r--r-- | libavcodec/apedec.c | 4 | ||||
-rw-r--r-- | libavcodec/cavs.c | 39 | ||||
-rw-r--r-- | libavcodec/libspeexdec.c | 2 | ||||
-rw-r--r-- | libavcodec/smacker.c | 2 | ||||
-rw-r--r-- | libavformat/oggenc.c | 22 |
5 files changed, 36 insertions, 33 deletions
diff --git a/libavcodec/apedec.c b/libavcodec/apedec.c index 4d0801b708..cdc528b196 100644 --- a/libavcodec/apedec.c +++ b/libavcodec/apedec.c @@ -425,8 +425,8 @@ static inline int ape_decode_value(APEContext *ctx, APERice *rice) x = range_decode_bits(ctx, 16); x |= (range_decode_bits(ctx, tmpk - 16) << 16); } else { - av_log(ctx->avctx, AV_LOG_ERROR, "too many bits\n"); - return -1; + av_log(ctx->avctx, AV_LOG_ERROR, "Too many bits: %d\n", tmpk); + return AVERROR_INVALIDDATA; } x += overflow << tmpk; } else { diff --git a/libavcodec/cavs.c b/libavcodec/cavs.c index 47600c9683..b6dcd2e4ec 100644 --- a/libavcodec/cavs.c +++ b/libavcodec/cavs.c @@ -324,11 +324,12 @@ void ff_cavs_modify_mb_i(AVSContext *h, int *pred_mode_uv) { * ****************************************************************************/ -static inline void mc_dir_part(AVSContext *h,Picture *pic,int square, - int chroma_height,int delta,int list,uint8_t *dest_y, - uint8_t *dest_cb,uint8_t *dest_cr,int src_x_offset, - int src_y_offset,qpel_mc_func *qpix_op, - h264_chroma_mc_func chroma_op,cavs_vector *mv){ +static inline void mc_dir_part(AVSContext *h,Picture *pic, + int chroma_height,int delta,int list,uint8_t *dest_y, + uint8_t *dest_cb,uint8_t *dest_cr,int src_x_offset, + int src_y_offset,qpel_mc_func *qpix_op, + h264_chroma_mc_func chroma_op,cavs_vector *mv) +{ MpegEncContext * const s = &h->s; const int mx= mv->x + src_x_offset*8; const int my= mv->y + src_y_offset*8; @@ -360,9 +361,6 @@ static inline void mc_dir_part(AVSContext *h,Picture *pic,int square, } qpix_op[luma_xy](dest_y, src_y, h->l_stride); //FIXME try variable height perhaps? - if(!square){ - qpix_op[luma_xy](dest_y + delta, src_y + delta, h->l_stride); - } if(emu){ s->dsp.emulated_edge_mc(s->edge_emu_buffer, src_cb, h->c_stride, @@ -379,11 +377,12 @@ static inline void mc_dir_part(AVSContext *h,Picture *pic,int square, chroma_op(dest_cr, src_cr, h->c_stride, chroma_height, mx&7, my&7); } -static inline void mc_part_std(AVSContext *h,int square,int chroma_height,int delta, - uint8_t *dest_y,uint8_t *dest_cb,uint8_t *dest_cr, - int x_offset, int y_offset,qpel_mc_func *qpix_put, - h264_chroma_mc_func chroma_put,qpel_mc_func *qpix_avg, - h264_chroma_mc_func chroma_avg, cavs_vector *mv){ +static inline void mc_part_std(AVSContext *h,int chroma_height,int delta, + uint8_t *dest_y,uint8_t *dest_cb,uint8_t *dest_cr, + int x_offset, int y_offset,qpel_mc_func *qpix_put, + h264_chroma_mc_func chroma_put,qpel_mc_func *qpix_avg, + h264_chroma_mc_func chroma_avg, cavs_vector *mv) +{ qpel_mc_func *qpix_op= qpix_put; h264_chroma_mc_func chroma_op= chroma_put; @@ -395,7 +394,7 @@ static inline void mc_part_std(AVSContext *h,int square,int chroma_height,int de if(mv->ref >= 0){ Picture *ref= &h->DPB[mv->ref]; - mc_dir_part(h, ref, square, chroma_height, delta, 0, + mc_dir_part(h, ref, chroma_height, delta, 0, dest_y, dest_cb, dest_cr, x_offset, y_offset, qpix_op, chroma_op, mv); @@ -405,7 +404,7 @@ static inline void mc_part_std(AVSContext *h,int square,int chroma_height,int de if((mv+MV_BWD_OFFS)->ref >= 0){ Picture *ref= &h->DPB[0]; - mc_dir_part(h, ref, square, chroma_height, delta, 1, + mc_dir_part(h, ref, chroma_height, delta, 1, dest_y, dest_cb, dest_cr, x_offset, y_offset, qpix_op, chroma_op, mv+MV_BWD_OFFS); } @@ -413,28 +412,28 @@ static inline void mc_part_std(AVSContext *h,int square,int chroma_height,int de void ff_cavs_inter(AVSContext *h, enum cavs_mb mb_type) { if(ff_cavs_partition_flags[mb_type] == 0){ // 16x16 - mc_part_std(h, 1, 8, 0, h->cy, h->cu, h->cv, 0, 0, + mc_part_std(h, 8, 0, h->cy, h->cu, h->cv, 0, 0, h->cdsp.put_cavs_qpel_pixels_tab[0], h->s.dsp.put_h264_chroma_pixels_tab[0], h->cdsp.avg_cavs_qpel_pixels_tab[0], h->s.dsp.avg_h264_chroma_pixels_tab[0],&h->mv[MV_FWD_X0]); }else{ - mc_part_std(h, 1, 4, 0, h->cy, h->cu, h->cv, 0, 0, + mc_part_std(h, 4, 0, h->cy, h->cu, h->cv, 0, 0, h->cdsp.put_cavs_qpel_pixels_tab[1], h->s.dsp.put_h264_chroma_pixels_tab[1], h->cdsp.avg_cavs_qpel_pixels_tab[1], h->s.dsp.avg_h264_chroma_pixels_tab[1],&h->mv[MV_FWD_X0]); - mc_part_std(h, 1, 4, 0, h->cy, h->cu, h->cv, 4, 0, + mc_part_std(h, 4, 0, h->cy, h->cu, h->cv, 4, 0, h->cdsp.put_cavs_qpel_pixels_tab[1], h->s.dsp.put_h264_chroma_pixels_tab[1], h->cdsp.avg_cavs_qpel_pixels_tab[1], h->s.dsp.avg_h264_chroma_pixels_tab[1],&h->mv[MV_FWD_X1]); - mc_part_std(h, 1, 4, 0, h->cy, h->cu, h->cv, 0, 4, + mc_part_std(h, 4, 0, h->cy, h->cu, h->cv, 0, 4, h->cdsp.put_cavs_qpel_pixels_tab[1], h->s.dsp.put_h264_chroma_pixels_tab[1], h->cdsp.avg_cavs_qpel_pixels_tab[1], h->s.dsp.avg_h264_chroma_pixels_tab[1],&h->mv[MV_FWD_X2]); - mc_part_std(h, 1, 4, 0, h->cy, h->cu, h->cv, 4, 4, + mc_part_std(h, 4, 0, h->cy, h->cu, h->cv, 4, 4, h->cdsp.put_cavs_qpel_pixels_tab[1], h->s.dsp.put_h264_chroma_pixels_tab[1], h->cdsp.avg_cavs_qpel_pixels_tab[1], diff --git a/libavcodec/libspeexdec.c b/libavcodec/libspeexdec.c index 7c5544a092..e0a4d6be8b 100644 --- a/libavcodec/libspeexdec.c +++ b/libavcodec/libspeexdec.c @@ -54,7 +54,7 @@ static av_cold int libspeex_decode_init(AVCodecContext *avctx) if (s->header) { avctx->sample_rate = s->header->rate; avctx->channels = s->header->nb_channels; - s->frame_size = s->header->frame_size; + s->frame_size = s->header->frame_size; mode = speex_lib_get_mode(s->header->mode); if (!mode) { diff --git a/libavcodec/smacker.c b/libavcodec/smacker.c index d2f9df09c7..ad9c58cbd6 100644 --- a/libavcodec/smacker.c +++ b/libavcodec/smacker.c @@ -661,7 +661,7 @@ static int smka_decode_frame(AVCodecContext *avctx, void *data, } if(bits) { //decode 16-bit data for(i = stereo; i >= 0; i--) - pred[i] = av_bswap16(get_bits(&gb, 16)); + pred[i] = sign_extend(av_bswap16(get_bits(&gb, 16)), 16); for(i = 0; i <= stereo; i++) *samples++ = pred[i]; for(; i < unp_size / 2; i++) { diff --git a/libavformat/oggenc.c b/libavformat/oggenc.c index 05b4b25a71..b787d1b26c 100644 --- a/libavformat/oggenc.c +++ b/libavformat/oggenc.c @@ -22,6 +22,7 @@ #include "libavutil/crc.h" #include "libavutil/opt.h" #include "libavutil/mathematics.h" +#include "libavutil/opt.h" #include "libavutil/random_seed.h" #include "libavcodec/xiph.h" #include "libavcodec/bytestream.h" @@ -69,18 +70,22 @@ typedef struct { int pref_size; ///< preferred page size (0 => fill all segments) } OGGContext; +#define OFFSET(x) offsetof(OGGContext, x) +#define PARAM AV_OPT_FLAG_ENCODING_PARAM static const AVOption options[] = { { "oggpagesize", "Set preferred Ogg page size.", offsetof(OGGContext, pref_size), AV_OPT_TYPE_INT, {.dbl = 0}, 0, MAX_PAGE_SIZE, AV_OPT_FLAG_ENCODING_PARAM}, + { "pagesize", "preferred page size in bytes", + OFFSET(pref_size), AV_OPT_TYPE_INT, { 0 }, 0, MAX_PAGE_SIZE, PARAM }, { NULL }, }; static const AVClass ogg_muxer_class = { - "Ogg muxer", - av_default_item_name, - options, - LIBAVUTIL_VERSION_INT, + .class_name = "Ogg muxer", + .item_name = av_default_item_name, + .option = options, + .version = LIBAVUTIL_VERSION_INT, }; @@ -209,8 +214,7 @@ static int ogg_buffer_data(AVFormatContext *s, AVStream *st, // them as such, otherwise seeking will not work correctly at the very // least with old libogg versions. // Do not try to flush header packets though, that will create broken files. - if (st->codec->codec_id == CODEC_ID_THEORA && - !header && + if (st->codec->codec_id == CODEC_ID_THEORA && !header && (ogg_granule_to_timestamp(oggstream, granule) > ogg_granule_to_timestamp(oggstream, oggstream->last_granule) + 1 || ogg_key_granule(oggstream, granule))) { @@ -241,8 +245,8 @@ static int ogg_buffer_data(AVFormatContext *s, AVStream *st, if (i == total_segments) page->granule = granule; - if(page->segments_count == 255 || - (ogg->pref_size > 0 && page->size >= ogg->pref_size)) { + if (!header && (page->segments_count == 255 || + (ogg->pref_size > 0 && page->size >= ogg->pref_size))) { ogg_buffer_page(s, oggstream); } } @@ -547,5 +551,5 @@ AVOutputFormat ff_ogg_muxer = { .write_header = ogg_write_header, .write_packet = ogg_write_packet, .write_trailer = ogg_write_trailer, - .priv_class = &ogg_muxer_class, + .priv_class = &ogg_muxer_class, }; |