PIX_FMT_NONE and related fixes

Originally committed as revision 4161 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
Michael Niedermayer 2005-04-25 18:29:06 +00:00
parent 3ca4b65479
commit 644a92626a
9 changed files with 21 additions and 12 deletions

View File

@ -86,7 +86,7 @@ static AVImageFormat *image_format;
static int frame_width = 0;
static int frame_height = 0;
static float frame_aspect_ratio = 0;
static enum PixelFormat frame_pix_fmt = PIX_FMT_YUV420P;
static enum PixelFormat frame_pix_fmt = PIX_FMT_NONE;
static int frame_padtop = 0;
static int frame_padbottom = 0;
static int frame_padleft = 0;

View File

@ -557,6 +557,7 @@ static int decode_init(AVCodecContext *avctx){
common_init(avctx);
init_vlcs(a);
ff_init_scantable(a->dsp.idct_permutation, &a->scantable, scantab);
avctx->pix_fmt= PIX_FMT_YUV420P;
a->inv_qscale= ((uint8_t*)avctx->extradata)[0];
if(a->inv_qscale == 0){

View File

@ -17,7 +17,7 @@ extern "C" {
#define FFMPEG_VERSION_INT 0x000409
#define FFMPEG_VERSION "0.4.9-pre1"
#define LIBAVCODEC_BUILD 4752
#define LIBAVCODEC_BUILD 4753
#define LIBAVCODEC_VERSION_INT FFMPEG_VERSION_INT
#define LIBAVCODEC_VERSION FFMPEG_VERSION
@ -206,6 +206,7 @@ enum CodecType {
* to run on the IBM VGA graphics adapter use 6-bit palette components.
*/
enum PixelFormat {
PIX_FMT_NONE= -1,
PIX_FMT_YUV420P, ///< Planar YUV 4:2:0 (1 Cr & Cb sample per 2x2 Y samples)
PIX_FMT_YUV422, ///< Packed pixel, Y0 Cb Y1 Cr
PIX_FMT_RGB24, ///< Packed pixel, 3 bytes per pixel, RGBRGB...

View File

@ -560,7 +560,9 @@ static int rv10_decode_init(AVCodecContext *avctx)
if(avctx->debug & FF_DEBUG_PICT_INFO){
av_log(avctx, AV_LOG_DEBUG, "ver:%X ver0:%X\n", avctx->sub_id, avctx->extradata_size >= 4 ? ((uint32_t*)avctx->extradata)[0] : -1);
}
avctx->pix_fmt = PIX_FMT_YUV420P;
if (MPV_common_init(s) < 0)
return -1;
@ -576,8 +578,6 @@ static int rv10_decode_init(AVCodecContext *avctx)
rv_chrom_code, 2, 2, 1);
done = 1;
}
avctx->pix_fmt = PIX_FMT_YUV420P;
return 0;
}

View File

@ -3652,6 +3652,8 @@ static int decode_init(AVCodecContext *avctx)
{
SnowContext *s = avctx->priv_data;
int block_size;
avctx->pix_fmt= PIX_FMT_YUV420P;
common_init(avctx);

View File

@ -459,6 +459,7 @@ void avcodec_get_context_defaults(AVCodecContext *s){
s->profile= FF_PROFILE_UNKNOWN;
s->level= FF_LEVEL_UNKNOWN;
s->me_penalty_compensation= 256;
s->pix_fmt= PIX_FMT_NONE;
s->intra_quant_bias= FF_DEFAULT_QUANT_BIAS;
s->inter_quant_bias= FF_DEFAULT_QUANT_BIAS;

View File

@ -222,7 +222,7 @@ static int img_read_header(AVFormatContext *s1, AVFormatParameters *ap)
st->codec.codec_type = CODEC_TYPE_VIDEO;
st->codec.codec_id = av_str2id(img_tags, s->path);
}
if(st->codec.codec_type == CODEC_TYPE_VIDEO && ap->pix_fmt)
if(st->codec.codec_type == CODEC_TYPE_VIDEO && ap->pix_fmt != PIX_FMT_NONE)
st->codec.pix_fmt = ap->pix_fmt;
return 0;

View File

@ -1682,7 +1682,7 @@ static int has_codec_parameters(AVCodecContext *enc)
val = enc->sample_rate;
break;
case CODEC_TYPE_VIDEO:
val = enc->width;
val = enc->width && enc->pix_fmt != PIX_FMT_NONE;
break;
default:
val = 1;
@ -1704,6 +1704,8 @@ static int try_decode_frame(AVStream *st, const uint8_t *data, int size)
ret = avcodec_open(&st->codec, codec);
if (ret < 0)
return ret;
if(!has_codec_parameters(&st->codec)){
switch(st->codec.codec_type) {
case CODEC_TYPE_VIDEO:
ret = avcodec_decode_video(&st->codec, &picture,
@ -1720,6 +1722,7 @@ static int try_decode_frame(AVStream *st, const uint8_t *data, int size)
default:
break;
}
}
fail:
avcodec_close(&st->codec);
return ret;
@ -1739,6 +1742,7 @@ static int try_decode_frame(AVStream *st, const uint8_t *data, int size)
*
* @param ic media file handle
* @return >=0 if OK. AVERROR_xxx if error.
* @todo let user decide somehow what information is needed so we dont waste time geting stuff the user doesnt need
*/
int av_find_stream_info(AVFormatContext *ic)
{
@ -1841,7 +1845,7 @@ int av_find_stream_info(AVFormatContext *ic)
decompress the frame. We try to avoid that in most cases as
it takes longer and uses more memory. For MPEG4, we need to
decompress for Quicktime. */
if (!has_codec_parameters(&st->codec) &&
if (!has_codec_parameters(&st->codec) /*&&
(st->codec.codec_id == CODEC_ID_FLV1 ||
st->codec.codec_id == CODEC_ID_H264 ||
st->codec.codec_id == CODEC_ID_H263 ||
@ -1855,7 +1859,7 @@ int av_find_stream_info(AVFormatContext *ic)
st->codec.codec_id == CODEC_ID_PBM ||
st->codec.codec_id == CODEC_ID_PPM ||
st->codec.codec_id == CODEC_ID_SHORTEN ||
(st->codec.codec_id == CODEC_ID_MPEG4 && !st->need_parsing)))
(st->codec.codec_id == CODEC_ID_MPEG4 && !st->need_parsing))*/)
try_decode_frame(st, pkt->data, pkt->size);
if (st->codec_info_duration >= MAX_STREAM_DURATION) {

View File

@ -290,7 +290,7 @@ file=${outfile}huffyuv.avi
do_ffmpeg $file -y -f pgmyuv -i $raw_src -an -vcodec huffyuv -pix_fmt yuv422p $file
# huffyuv decoding
do_ffmpeg $raw_dst -y -i $file -f rawvideo -strict -1 $raw_dst
do_ffmpeg $raw_dst -y -i $file -f rawvideo -strict -1 -pix_fmt yuv420p $raw_dst
fi
###################################
@ -370,7 +370,7 @@ file=${outfile}mjpeg.avi
do_ffmpeg $file -y -qscale 10 -f pgmyuv -i $raw_src -an -vcodec mjpeg -pix_fmt yuvj420p $file
# mjpeg decoding
do_ffmpeg $raw_dst -y -i $file -f rawvideo $raw_dst
do_ffmpeg $raw_dst -y -i $file -f rawvideo -pix_fmt yuv420p $raw_dst
fi
###################################
@ -467,7 +467,7 @@ file=${outfile}svq1.mov
do_ffmpeg $file -y -f pgmyuv -i $raw_src -an -vcodec svq1 -qscale 3 -pix_fmt yuv410p $file
# svq1 decoding
do_ffmpeg $raw_dst -y -i $file -f rawvideo $raw_dst
do_ffmpeg $raw_dst -y -i $file -f rawvideo -pix_fmt yuv420p $raw_dst
fi
###################################