Mercurial > libavcodec.hg
comparison avcodec.h @ 9355:54bc8a2727b0 libavcodec
Implement avcodec_decode_video2(), _audio3() and _subtitle2() which takes an
AVPacket argument rather than a const uint8_t *buf + int buf_size. This allows
passing of packet-specific flags from demuxer to decoder, such as the keyframe
flag, which appears necessary to playback corePNG P-frames.
Patch by Thilo Borgmann thilo.borgmann googlemail com, see also the thread
"Google Summer of Code participation" on the mailinglist.
author | rbultje |
---|---|
date | Tue, 07 Apr 2009 15:59:50 +0000 |
parents | 174309386512 |
children | 2108342734cc |
comparison
equal
deleted
inserted
replaced
9354:174309386512 | 9355:54bc8a2727b0 |
---|---|
2427 enum CodecID id; | 2427 enum CodecID id; |
2428 int priv_data_size; | 2428 int priv_data_size; |
2429 int (*init)(AVCodecContext *); | 2429 int (*init)(AVCodecContext *); |
2430 int (*encode)(AVCodecContext *, uint8_t *buf, int buf_size, void *data); | 2430 int (*encode)(AVCodecContext *, uint8_t *buf, int buf_size, void *data); |
2431 int (*close)(AVCodecContext *); | 2431 int (*close)(AVCodecContext *); |
2432 int (*decode)(AVCodecContext *, void *outdata, int *outdata_size, | 2432 int (*decode)(AVCodecContext *, void *outdata, int *outdata_size, AVPacket *avpkt); |
2433 const uint8_t *buf, int buf_size); | |
2434 /** | 2433 /** |
2435 * Codec capabilities. | 2434 * Codec capabilities. |
2436 * see CODEC_CAP_* | 2435 * see CODEC_CAP_* |
2437 */ | 2436 */ |
2438 int capabilities; | 2437 int capabilities; |
3018 * @return zero on success, a negative value on error | 3017 * @return zero on success, a negative value on error |
3019 * @see avcodec_alloc_context, avcodec_find_decoder, avcodec_find_encoder | 3018 * @see avcodec_alloc_context, avcodec_find_decoder, avcodec_find_encoder |
3020 */ | 3019 */ |
3021 int avcodec_open(AVCodecContext *avctx, AVCodec *codec); | 3020 int avcodec_open(AVCodecContext *avctx, AVCodec *codec); |
3022 | 3021 |
3022 #if LIBAVCODEC_VERSION_MAJOR < 53 | |
3023 /** | 3023 /** |
3024 * Decodes an audio frame from \p buf into \p samples. | 3024 * Decodes an audio frame from \p buf into \p samples. |
3025 * The avcodec_decode_audio2() function decodes an audio frame from the input | 3025 * Wrapper function which calls avcodec_decode_audio3. |
3026 * buffer \p buf of size \p buf_size. To decode it, it makes use of the | 3026 * |
3027 * @deprecated Use avcodec_decode_audio3 instead. | |
3028 * @param avctx the codec context | |
3029 * @param[out] samples the output buffer | |
3030 * @param[in,out] frame_size_ptr the output buffer size in bytes | |
3031 * @param[in] buf the input buffer | |
3032 * @param[in] buf_size the input buffer size in bytes | |
3033 * @return On error a negative value is returned, otherwise the number of bytes | |
3034 * used or zero if no frame could be decompressed. | |
3035 */ | |
3036 attribute_deprecated int avcodec_decode_audio2(AVCodecContext *avctx, int16_t *samples, | |
3037 int *frame_size_ptr, | |
3038 const uint8_t *buf, int buf_size); | |
3039 #endif | |
3040 | |
3041 /** | |
3042 * Decodes an audio frame from \p avpkt->data into \p samples. | |
3043 * The avcodec_decode_audio3() function decodes an audio frame from the input | |
3044 * buffer \p avpkt->data of size \p avpkt->size. To decode it, it makes use of the | |
3027 * audio codec which was coupled with \p avctx using avcodec_open(). The | 3045 * audio codec which was coupled with \p avctx using avcodec_open(). The |
3028 * resulting decoded frame is stored in output buffer \p samples. If no frame | 3046 * resulting decoded frame is stored in output buffer \p samples. If no frame |
3029 * could be decompressed, \p frame_size_ptr is zero. Otherwise, it is the | 3047 * could be decompressed, \p frame_size_ptr is zero. Otherwise, it is the |
3030 * decompressed frame size in \e bytes. | 3048 * decompressed frame size in \e bytes. |
3031 * | 3049 * |
3032 * @warning You \e must set \p frame_size_ptr to the allocated size of the | 3050 * @warning You \e must set \p frame_size_ptr to the allocated size of the |
3033 * output buffer before calling avcodec_decode_audio2(). | 3051 * output buffer before calling avcodec_decode_audio3(). |
3034 * | 3052 * |
3035 * @warning The input buffer must be \c FF_INPUT_BUFFER_PADDING_SIZE larger than | 3053 * @warning The input buffer must be \c FF_INPUT_BUFFER_PADDING_SIZE larger than |
3036 * the actual read bytes because some optimized bitstream readers read 32 or 64 | 3054 * the actual read bytes because some optimized bitstream readers read 32 or 64 |
3037 * bits at once and could read over the end. | 3055 * bits at once and could read over the end. |
3038 * | 3056 * |
3039 * @warning The end of the input buffer \p buf should be set to 0 to ensure that | 3057 * @warning The end of the input buffer \p avpkt->data should be set to 0 to ensure that |
3040 * no overreading happens for damaged MPEG streams. | 3058 * no overreading happens for damaged MPEG streams. |
3041 * | 3059 * |
3042 * @note You might have to align the input buffer \p buf and output buffer \p | 3060 * @note You might have to align the input buffer \p avpkt->data and output buffer \p |
3043 * samples. The alignment requirements depend on the CPU: On some CPUs it isn't | 3061 * samples. The alignment requirements depend on the CPU: On some CPUs it isn't |
3044 * necessary at all, on others it won't work at all if not aligned and on others | 3062 * necessary at all, on others it won't work at all if not aligned and on others |
3045 * it will work but it will have an impact on performance. In practice, the | 3063 * it will work but it will have an impact on performance. In practice, the |
3046 * bitstream should have 4 byte alignment at minimum and all sample data should | 3064 * bitstream should have 4 byte alignment at minimum and all sample data should |
3047 * be 16 byte aligned unless the CPU doesn't need it (AltiVec and SSE do). If | 3065 * be 16 byte aligned unless the CPU doesn't need it (AltiVec and SSE do). If |
3049 * start of the buffer to 16. | 3067 * start of the buffer to 16. |
3050 * | 3068 * |
3051 * @param avctx the codec context | 3069 * @param avctx the codec context |
3052 * @param[out] samples the output buffer | 3070 * @param[out] samples the output buffer |
3053 * @param[in,out] frame_size_ptr the output buffer size in bytes | 3071 * @param[in,out] frame_size_ptr the output buffer size in bytes |
3054 * @param[in] buf the input buffer | 3072 * @param[in] avpkt The input AVPacket containing the input buffer. |
3055 * @param[in] buf_size the input buffer size in bytes | |
3056 * @return On error a negative value is returned, otherwise the number of bytes | 3073 * @return On error a negative value is returned, otherwise the number of bytes |
3057 * used or zero if no frame could be decompressed. | 3074 * used or zero if no frame could be decompressed. |
3058 */ | 3075 */ |
3059 int avcodec_decode_audio2(AVCodecContext *avctx, int16_t *samples, | 3076 int avcodec_decode_audio3(AVCodecContext *avctx, int16_t *samples, |
3060 int *frame_size_ptr, | 3077 int *frame_size_ptr, |
3078 AVPacket *avpkt); | |
3079 | |
3080 #if LIBAVCODEC_VERSION_MAJOR < 53 | |
3081 /** | |
3082 * Decodes a video frame from \p buf into \p picture. | |
3083 * Wrapper function which calls avcodec_decode_video2. | |
3084 * | |
3085 * @deprecated Use avcodec_decode_video2 instead. | |
3086 * @param avctx the codec context | |
3087 * @param[out] picture The AVFrame in which the decoded video frame will be stored. | |
3088 * @param[in] buf the input buffer | |
3089 * @param[in] buf_size the size of the input buffer in bytes | |
3090 * @param[in,out] got_picture_ptr Zero if no frame could be decompressed, otherwise, it is nonzero. | |
3091 * @return On error a negative value is returned, otherwise the number of bytes | |
3092 * used or zero if no frame could be decompressed. | |
3093 */ | |
3094 attribute_deprecated int avcodec_decode_video(AVCodecContext *avctx, AVFrame *picture, | |
3095 int *got_picture_ptr, | |
3061 const uint8_t *buf, int buf_size); | 3096 const uint8_t *buf, int buf_size); |
3062 | 3097 #endif |
3063 /** | 3098 |
3064 * Decodes a video frame from \p buf into \p picture. | 3099 /** |
3065 * The avcodec_decode_video() function decodes a video frame from the input | 3100 * Decodes a video frame from \p avpkt->data into \p picture. |
3066 * buffer \p buf of size \p buf_size. To decode it, it makes use of the | 3101 * The avcodec_decode_video2() function decodes a video frame from the input |
3102 * buffer \p avpkt->data of size \p avpkt->size. To decode it, it makes use of the | |
3067 * video codec which was coupled with \p avctx using avcodec_open(). The | 3103 * video codec which was coupled with \p avctx using avcodec_open(). The |
3068 * resulting decoded frame is stored in \p picture. | 3104 * resulting decoded frame is stored in \p picture. |
3069 * | 3105 * |
3070 * @warning The input buffer must be \c FF_INPUT_BUFFER_PADDING_SIZE larger than | 3106 * @warning The input buffer must be \c FF_INPUT_BUFFER_PADDING_SIZE larger than |
3071 * the actual read bytes because some optimized bitstream readers read 32 or 64 | 3107 * the actual read bytes because some optimized bitstream readers read 32 or 64 |
3072 * bits at once and could read over the end. | 3108 * bits at once and could read over the end. |
3073 * | 3109 * |
3074 * @warning The end of the input buffer \p buf should be set to 0 to ensure that | 3110 * @warning The end of the input buffer \p buf should be set to 0 to ensure that |
3075 * no overreading happens for damaged MPEG streams. | 3111 * no overreading happens for damaged MPEG streams. |
3076 * | 3112 * |
3077 * @note You might have to align the input buffer \p buf and output buffer \p | 3113 * @note You might have to align the input buffer \p avpkt->data and output buffer \p |
3078 * samples. The alignment requirements depend on the CPU: on some CPUs it isn't | 3114 * samples. The alignment requirements depend on the CPU: on some CPUs it isn't |
3079 * necessary at all, on others it won't work at all if not aligned and on others | 3115 * necessary at all, on others it won't work at all if not aligned and on others |
3080 * it will work but it will have an impact on performance. In practice, the | 3116 * it will work but it will have an impact on performance. In practice, the |
3081 * bitstream should have 4 byte alignment at minimum and all sample data should | 3117 * bitstream should have 4 byte alignment at minimum and all sample data should |
3082 * be 16 byte aligned unless the CPU doesn't need it (AltiVec and SSE do). If | 3118 * be 16 byte aligned unless the CPU doesn't need it (AltiVec and SSE do). If |
3083 * the linesize is not a multiple of 16 then there's no sense in aligning the | 3119 * the linesize is not a multiple of 16 then there's no sense in aligning the |
3084 * start of the buffer to 16. | 3120 * start of the buffer to 16. |
3085 * | 3121 * |
3086 * @note Some codecs have a delay between input and output, these need to be | 3122 * @note Some codecs have a delay between input and output, these need to be |
3087 * feeded with buf=NULL, buf_size=0 at the end to return the remaining frames. | 3123 * feeded with avpkt->data=NULL, avpkt->size=0 at the end to return the remaining frames. |
3088 * | 3124 * |
3089 * @param avctx the codec context | 3125 * @param avctx the codec context |
3090 * @param[out] picture The AVFrame in which the decoded video frame will be stored. | 3126 * @param[out] picture The AVFrame in which the decoded video frame will be stored. |
3091 * @param[in] buf the input buffer | 3127 * @param[in] avpkt The input AVpacket containing the input buffer. |
3092 * @param[in] buf_size the size of the input buffer in bytes | |
3093 * @param[in,out] got_picture_ptr Zero if no frame could be decompressed, otherwise, it is nonzero. | 3128 * @param[in,out] got_picture_ptr Zero if no frame could be decompressed, otherwise, it is nonzero. |
3094 * @return On error a negative value is returned, otherwise the number of bytes | 3129 * @return On error a negative value is returned, otherwise the number of bytes |
3095 * used or zero if no frame could be decompressed. | 3130 * used or zero if no frame could be decompressed. |
3096 */ | 3131 */ |
3097 int avcodec_decode_video(AVCodecContext *avctx, AVFrame *picture, | 3132 int avcodec_decode_video2(AVCodecContext *avctx, AVFrame *picture, |
3098 int *got_picture_ptr, | 3133 int *got_picture_ptr, |
3099 const uint8_t *buf, int buf_size); | 3134 AVPacket *avpkt); |
3100 | 3135 |
3136 #if LIBAVCODEC_VERSION_MAJOR < 53 | |
3101 /* Decode a subtitle message. Return -1 if error, otherwise return the | 3137 /* Decode a subtitle message. Return -1 if error, otherwise return the |
3102 * number of bytes used. If no subtitle could be decompressed, | 3138 * number of bytes used. If no subtitle could be decompressed, |
3103 * got_sub_ptr is zero. Otherwise, the subtitle is stored in *sub. */ | 3139 * got_sub_ptr is zero. Otherwise, the subtitle is stored in *sub. */ |
3104 int avcodec_decode_subtitle(AVCodecContext *avctx, AVSubtitle *sub, | 3140 attribute_deprecated int avcodec_decode_subtitle(AVCodecContext *avctx, AVSubtitle *sub, |
3105 int *got_sub_ptr, | 3141 int *got_sub_ptr, |
3106 const uint8_t *buf, int buf_size); | 3142 const uint8_t *buf, int buf_size); |
3143 #endif | |
3144 | |
3145 /** | |
3146 * Decodes a subtitle message. | |
3147 * Returns -1 if error, otherwise returns the number of bytes used. | |
3148 * If no subtitle could be decompressed, \p got_sub_ptr is zero. | |
3149 * Otherwise, the subtitle is stored in \p *sub. | |
3150 * | |
3151 * @param avctx the codec context | |
3152 * @param[out] sub The AVSubtitle in which the decoded subtitle will be stored. | |
3153 * @param[in,out] got_sub_ptr Zero if no subtitle could be decompressed, otherwise, it is nonzero. | |
3154 * @param[in] avpkt The input AVPacket containing the input buffer. | |
3155 */ | |
3156 int avcodec_decode_subtitle2(AVCodecContext *avctx, AVSubtitle *sub, | |
3157 int *got_sub_ptr, | |
3158 AVPacket *avpkt); | |
3107 int avcodec_parse_frame(AVCodecContext *avctx, uint8_t **pdata, | 3159 int avcodec_parse_frame(AVCodecContext *avctx, uint8_t **pdata, |
3108 int *data_size_ptr, | 3160 int *data_size_ptr, |
3109 uint8_t *buf, int buf_size); | 3161 uint8_t *buf, int buf_size); |
3110 | 3162 |
3111 /** | 3163 /** |