X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=libavcodec%2Favcodec.h;h=e653d321616399697482d1bfe265046014ec632b;hb=ad81a9fe41bb3519df26ee2a2784f71176fbc3c4;hp=dc83bba064e33329db0873b2cab25b7006b04c57;hpb=1f0182250aede7baf92e8f7326560280ab7c3f46;p=ffmpeg diff --git a/libavcodec/avcodec.h b/libavcodec/avcodec.h index dc83bba064e..e653d321616 100644 --- a/libavcodec/avcodec.h +++ b/libavcodec/avcodec.h @@ -17,7 +17,7 @@ extern "C" { #define FFMPEG_VERSION_INT 0x000409 #define FFMPEG_VERSION "0.4.9-pre1" -#define LIBAVCODEC_BUILD 4721 +#define LIBAVCODEC_BUILD 4725 #define LIBAVCODEC_VERSION_INT FFMPEG_VERSION_INT #define LIBAVCODEC_VERSION FFMPEG_VERSION @@ -103,6 +103,7 @@ enum CodecID { CODEC_ID_SNOW, CODEC_ID_TSCC, CODEC_ID_ULTI, + CODEC_ID_QDRAW, /* various pcm "codecs" */ CODEC_ID_PCM_S16LE, @@ -127,6 +128,7 @@ enum CodecID { CODEC_ID_ADPCM_ADX, CODEC_ID_ADPCM_EA, CODEC_ID_ADPCM_G726, + CODEC_ID_ADPCM_CT, /* AMR */ CODEC_ID_AMR_NB, @@ -140,6 +142,7 @@ enum CodecID { CODEC_ID_ROQ_DPCM, CODEC_ID_INTERPLAY_DPCM, CODEC_ID_XAN_DPCM, + CODEC_ID_SOL_DPCM, CODEC_ID_FLAC, @@ -293,6 +296,7 @@ extern int motion_estimation_method; #define CODEC_FLAG_SVCD_SCAN_OFFSET 0x40000000 ///< will reserve space for SVCD scan offset user data #define CODEC_FLAG_CLOSED_GOP 0x80000000 #define CODEC_FLAG2_FAST 0x00000001 ///< allow non spec compliant speedup tricks +#define CODEC_FLAG2_STRICT_GOP 0x00000002 ///< strictly enforce GOP size /* Unsupported options : * Syntax Arithmetic coding (SAC) @@ -677,9 +681,11 @@ typedef struct AVCodecContext { int frame_rate; /** - * width / height. + * picture width / height. * - encoding: MUST be set by user. - * - decoding: set by user if known, codec should override / dynamically change if needed + * - decoding: set by lavc. + * Note, for compatibility its possible to set this instead of + * coded_width/height before decoding */ int width, height; @@ -1111,6 +1117,7 @@ typedef struct AVCodecContext { #define FF_IDCT_ALTIVEC 8 #define FF_IDCT_SH4 9 #define FF_IDCT_SIMPLEARM 10 +#define FF_IDCT_H264 11 /** * slice count. @@ -1656,6 +1663,21 @@ typedef struct AVCodecContext { */ int level; #define FF_LEVEL_UNKNOWN -99 + + /** + * low resolution decoding. 1-> 1/2 size, 2->1/4 size + * - encoding: unused + * - decoding: set by user + */ + int lowres; + + /** + * bistream width / height. may be different from width/height if lowres + * or other things are used + * - encoding: unused + * - decoding: set by user before init if known, codec should override / dynamically change if needed + */ + int coded_width, coded_height; } AVCodecContext; @@ -1860,11 +1882,13 @@ extern AVCodec ra_288_decoder; extern AVCodec roq_dpcm_decoder; extern AVCodec interplay_dpcm_decoder; extern AVCodec xan_dpcm_decoder; +extern AVCodec sol_dpcm_decoder; extern AVCodec sonic_decoder; extern AVCodec qtrle_decoder; extern AVCodec flac_decoder; extern AVCodec tscc_decoder; extern AVCodec ulti_decoder; +extern AVCodec qdraw_decoder; /* pcm codecs */ #define PCM_CODEC(id, name) \ @@ -1894,6 +1918,7 @@ PCM_CODEC(CODEC_ID_ADPCM_XA, adpcm_xa); PCM_CODEC(CODEC_ID_ADPCM_ADX, adpcm_adx); PCM_CODEC(CODEC_ID_ADPCM_EA, adpcm_ea); PCM_CODEC(CODEC_ID_ADPCM_G726, adpcm_g726); +PCM_CODEC(CODEC_ID_ADPCM_CT, adpcm_ct); #undef PCM_CODEC @@ -1965,6 +1990,7 @@ int avpicture_layout(const AVPicture* src, int pix_fmt, int width, int height, int avpicture_get_size(int pix_fmt, int width, int height); void avcodec_get_chroma_sub_sample(int pix_fmt, int *h_shift, int *v_shift); const char *avcodec_get_pix_fmt_name(int pix_fmt); +void avcodec_set_dimensions(AVCodecContext *s, int width, int height); enum PixelFormat avcodec_get_pix_fmt(const char* name); #define FF_LOSS_RESOLUTION 0x0001 /* loss due to resolution change */ @@ -2080,82 +2106,6 @@ int64_t av_rescale(int64_t a, int64_t b, int64_t c); */ int64_t av_rescale_rnd(int64_t a, int64_t b, int64_t c, enum AVRounding); -/** - * Interface for 0.5.0 version - * - * do not even think about it's usage for this moment - */ - -typedef struct { - /// compressed size used from given memory buffer - int size; - /// I/P/B frame type - int frame_type; -} avc_enc_result_t; - -/** - * Commands - * order can't be changed - once it was defined - */ -typedef enum { - // general commands - AVC_OPEN_BY_NAME = 0xACA000, - AVC_OPEN_BY_CODEC_ID, - AVC_OPEN_BY_FOURCC, - AVC_CLOSE, - - AVC_FLUSH, - // pin - struct { uint8_t* src, uint_t src_size } - // pout - struct { AVPicture* img, consumed_bytes, - AVC_DECODE, - // pin - struct { AVPicture* img, uint8_t* dest, uint_t dest_size } - // pout - uint_t used_from_dest_size - AVC_ENCODE, - - // query/get video commands - AVC_GET_VERSION = 0xACB000, - AVC_GET_WIDTH, - AVC_GET_HEIGHT, - AVC_GET_DELAY, - AVC_GET_QUANT_TABLE, - // ... - - // query/get audio commands - AVC_GET_FRAME_SIZE = 0xABC000, - - // maybe define some simple structure which - // might be passed to the user - but they can't - // contain any codec specific parts and these - // calls are usualy necessary only few times - - // set video commands - AVC_SET_WIDTH = 0xACD000, - AVC_SET_HEIGHT, - - // set video encoding commands - AVC_SET_FRAME_RATE = 0xACD800, - AVC_SET_QUALITY, - AVC_SET_HURRY_UP, - - // set audio commands - AVC_SET_SAMPLE_RATE = 0xACE000, - AVC_SET_CHANNELS, - -} avc_cmd_t; - -/** - * \param handle allocated private structure by libavcodec - * for initialization pass NULL - will be returned pout - * user is supposed to know nothing about its structure - * \param cmd type of operation to be performed - * \param pint input parameter - * \param pout output parameter - * - * \returns command status - eventually for query command it might return - * integer resulting value - */ -int avcodec(void* handle, avc_cmd_t cmd, void* pin, void* pout); - /* frame parsing */ typedef struct AVCodecParserContext { void *priv_data;