API changes, most recent first:
+2012-01-24 - xxxxxxx - lavfi 2.60.100
+ Add avfilter_graph_dump.
+
+ 2012-02-01 - xxxxxxx - lavc 54.01.0
+ Add av_fast_padded_malloc() as alternative for av_realloc() when aligned
+ memory is required. The buffer will always have FF_INPUT_BUFFER_PADDING_SIZE
+ zero-padded bytes at the end.
+
2012-01-31 - xxxxxxx - lavf 54.01.0
Add avformat_get_riff_video_tags() and avformat_get_riff_audio_tags().
CODEC_ID_DXTORY,
CODEC_ID_V410,
CODEC_ID_XWD,
- CODEC_ID_UTVIDEO = 0x800,
+ CODEC_ID_Y41P = MKBETAG('Y','4','1','P'),
+ CODEC_ID_ESCAPE130 = MKBETAG('E','1','3','0'),
+ CODEC_ID_AVRP = MKBETAG('A','V','R','P'),
+
+ CODEC_ID_G2M = MKBETAG( 0 ,'G','2','M'),
+ CODEC_ID_V308 = MKBETAG('V','3','0','8'),
+ CODEC_ID_YUV4 = MKBETAG('Y','U','V','4'),
/* various PCM "codecs" */
CODEC_ID_FIRST_AUDIO = 0x10000, ///< A dummy id pointing at the start of audio codecs
CODEC_ID_AAC_LATM,
CODEC_ID_QDMC,
CODEC_ID_CELT,
- #if LIBAVCODEC_VERSION_MAJOR > 53
- CODEC_ID_G723_1_DEPRECATED,
- CODEC_ID_G729_DEPRECATED,
+ CODEC_ID_G723_1,
+ CODEC_ID_G729,
CODEC_ID_8SVX_EXP,
CODEC_ID_8SVX_FIB,
- #endif
CODEC_ID_BMV_AUDIO,
- CODEC_ID_G729 = 0x15800,
- CODEC_ID_G723_1= 0x15801,
+ CODEC_ID_FFWAVESYNTH = MKBETAG('F','F','W','S'),
+ CODEC_ID_8SVX_RAW = MKBETAG('8','S','V','X'),
+ CODEC_ID_SONIC = MKBETAG('S','O','N','C'),
+ CODEC_ID_SONIC_LS = MKBETAG('S','O','N','L'),
/* subtitle codecs */
CODEC_ID_FIRST_SUBTITLE = 0x17000, ///< A dummy ID pointing at the start of subtitle codecs.
static av_cold int decode_init(AVCodecContext *avctx)
{
if (avctx->width & 1) {
- av_log(avctx, AV_LOG_ERROR, "FRWU needs even width\n");
+ av_log(avctx, AV_LOG_ERROR, "frwu needs even width\n");
- return -1;
+ return AVERROR(EINVAL);
}
avctx->pix_fmt = PIX_FMT_UYVY422;
void av_fast_padded_malloc(void *ptr, unsigned int *size, size_t min_size)
{
- void **p = ptr;
+ uint8_t **p = ptr;
if (min_size > SIZE_MAX - FF_INPUT_BUFFER_PADDING_SIZE) {
- *p = NULL;
+ av_freep(p);
*size = 0;
return;
}
return 0;
}
- case CODEC_ID_G723_1_DEPRECATED : return CODEC_ID_G723_1;
- case CODEC_ID_G729_DEPRECATED : return CODEC_ID_G729;
- case CODEC_ID_UTVIDEO_DEPRECATED: return CODEC_ID_UTVIDEO;
+static enum CodecID remap_deprecated_codec_id(enum CodecID id)
+{
+ switch(id){
++ //This is for future deprecatec codec ids, its empty since
++ //last major bump but will fill up again over time, please dont remove it
++// case CODEC_ID_UTVIDEO_DEPRECATED: return CODEC_ID_UTVIDEO;
+ default : return id;
+ }
+}
+
AVCodec *avcodec_find_encoder(enum CodecID id)
{
AVCodec *p, *experimental=NULL;
if (c->pic.data[0])
avctx->release_buffer(avctx, &c->pic);
- c->pic.reference = 1;
+ c->pic.reference = 3;
c->pic.buffer_hints = FF_BUFFER_HINTS_VALID;
- if (avctx->get_buffer(avctx, &c->pic) < 0) {
+ if ((ret = avctx->get_buffer(avctx, &c->pic)) < 0) {
av_log(avctx, AV_LOG_ERROR, "get_buffer() failed\n");
- return -1;
+ return ret;
}
/* parse header */
c->decode_xor = zmbv_decode_xor_32;
break;
default:
- c->decode_intra = NULL;
c->decode_xor = NULL;
- av_log(avctx, AV_LOG_ERROR,
- "Unsupported (for now) format %i\n", c->fmt);
- return -1;
+ av_log_ask_for_sample(avctx, "Unsupported (for now) format %i\n",
+ c->fmt);
+ return AVERROR_PATCHWELCOME;
}
zret = inflateReset(&c->zstream);
if (zret != Z_OK) {
av_log(avctx, AV_LOG_ERROR, "Inflate reset error: %d\n", zret);
return -1;
- }
-
- tmp = av_realloc(c->cur, avctx->width * avctx->height * (c->bpp / 8));
- if (!tmp)
- return AVERROR(ENOMEM);
- c->cur = tmp;
- tmp = av_realloc(c->prev, avctx->width * avctx->height * (c->bpp / 8));
- if (!tmp)
- return AVERROR(ENOMEM);
- c->prev = tmp;
- c->bx = (c->width + c->bw - 1) / c->bw;
- c->by = (c->height+ c->bh - 1) / c->bh;
- }
+ }
+
+ c->cur = av_realloc_f(c->cur, avctx->width * avctx->height, (c->bpp / 8));
+ c->prev = av_realloc_f(c->prev, avctx->width * avctx->height, (c->bpp / 8));
+ c->bx = (c->width + c->bw - 1) / c->bw;
+ c->by = (c->height+ c->bh - 1) / c->bh;
+ if (!c->cur || !c->prev)
+ return -1;
+ c->decode_intra= decode_intra;
+ }
- if (c->decode_intra == NULL) {
- av_log(avctx, AV_LOG_ERROR, "Error! Got no format or no keyframe!\n");
- return -1;
- }
+ if (c->decode_intra == NULL) {
+ av_log(avctx, AV_LOG_ERROR, "Error! Got no format or no keyframe!\n");
+ return AVERROR_INVALIDDATA;
+ }
- if (c->comp == 0) { //Uncompressed data
- memcpy(c->decomp_buf, buf, len);
- c->decomp_size = 1;
- } else { // ZLIB-compressed data
+ if (c->comp == 0) { //Uncompressed data
+ memcpy(c->decomp_buf, buf, len);
+ c->decomp_size = 1;
+ } else { // ZLIB-compressed data
c->zstream.total_in = c->zstream.total_out = 0;
c->zstream.next_in = buf;
c->zstream.avail_in = len;
}
}
- //FIXME yuy2* can read up to 7 samples too much
-
-static void yuy2ToY_c(uint8_t *dst, const uint8_t *src, int width,
+static void yuy2ToY_c(uint8_t *dst, const uint8_t *src, const uint8_t *unused1, const uint8_t *unused2, int width,
uint32_t *unused)
{
int i;