Originally committed as revision 3449 to svn://svn.ffmpeg.org/ffmpeg/trunk
int slice_count;
int swap_uv;//indicate VCR2
int save_aspect_info;
int slice_count;
int swap_uv;//indicate VCR2
int save_aspect_info;
+ AVRational frame_rate_ext; ///< MPEG-2 specific framerate modificator
static void quant_matrix_rebuild(uint16_t *matrix, const uint8_t *old_perm,
const uint8_t *new_perm){
static void quant_matrix_rebuild(uint16_t *matrix, const uint8_t *old_perm,
const uint8_t *new_perm){
-uint16_t temp_matrix[64];
-int i;
+ uint16_t temp_matrix[64];
+ int i;
memcpy(temp_matrix,matrix,64*sizeof(uint16_t));
memcpy(temp_matrix,matrix,64*sizeof(uint16_t));
//Call this function when we know all parameters
//it may be called in different places for mpeg1 and mpeg2
static int mpeg_decode_postinit(AVCodecContext *avctx){
//Call this function when we know all parameters
//it may be called in different places for mpeg1 and mpeg2
static int mpeg_decode_postinit(AVCodecContext *avctx){
-Mpeg1Context *s1 = avctx->priv_data;
-MpegEncContext *s = &s1->mpeg_enc_ctx;
-uint8_t old_permutation[64];
-
+ Mpeg1Context *s1 = avctx->priv_data;
+ MpegEncContext *s = &s1->mpeg_enc_ctx;
+ uint8_t old_permutation[64];
if (
(s1->mpeg_enc_ctx_allocated == 0)||
if (
(s1->mpeg_enc_ctx_allocated == 0)||
av_reduce(
&s->avctx->frame_rate,
&s->avctx->frame_rate_base,
av_reduce(
&s->avctx->frame_rate,
&s->avctx->frame_rate_base,
- frame_rate_tab[s->frame_rate_index].num * (s->frame_rate_ext_n+1),
- frame_rate_tab[s->frame_rate_index].den * (s->frame_rate_ext_d+1),
+ frame_rate_tab[s->frame_rate_index].num * s1->frame_rate_ext.num,
+ frame_rate_tab[s->frame_rate_index].den * s1->frame_rate_ext.den,
1<<30);
//mpeg2 aspect
if(s->aspect_ratio_info > 1){
1<<30);
//mpeg2 aspect
if(s->aspect_ratio_info > 1){
-static void mpeg_decode_sequence_extension(MpegEncContext *s)
+static void mpeg_decode_sequence_extension(Mpeg1Context *s1)
+ MpegEncContext *s= &s1->mpeg_enc_ctx;
int horiz_size_ext, vert_size_ext;
int bit_rate_ext;
int horiz_size_ext, vert_size_ext;
int bit_rate_ext;
s->low_delay = get_bits1(&s->gb);
if(s->flags & CODEC_FLAG_LOW_DELAY) s->low_delay=1;
s->low_delay = get_bits1(&s->gb);
if(s->flags & CODEC_FLAG_LOW_DELAY) s->low_delay=1;
- s->frame_rate_ext_n = get_bits(&s->gb, 2);
- s->frame_rate_ext_d = get_bits(&s->gb, 5);
+ s1->frame_rate_ext.num = get_bits(&s->gb, 2)+1;
+ s1->frame_rate_ext.den = get_bits(&s->gb, 5)+1;
dprintf("sequence extension\n");
s->codec_id= s->avctx->codec_id= CODEC_ID_MPEG2VIDEO;
dprintf("sequence extension\n");
s->codec_id= s->avctx->codec_id= CODEC_ID_MPEG2VIDEO;
ext_type = get_bits(&s->gb, 4);
switch(ext_type) {
case 0x1:
ext_type = get_bits(&s->gb, 4);
switch(ext_type) {
case 0x1:
- mpeg_decode_sequence_extension(s);
+ mpeg_decode_sequence_extension(s1);
break;
case 0x2:
mpeg_decode_sequence_display_extension(s1);
break;
case 0x2:
mpeg_decode_sequence_display_extension(s1);
}
static void exchange_uv(MpegEncContext *s){
}
static void exchange_uv(MpegEncContext *s){
-short * tmp;
-
- tmp = s->pblocks[4];
+ short * tmp = s->pblocks[4];
s->pblocks[4] = s->pblocks[5];
s->pblocks[5] = tmp;
}
s->pblocks[4] = s->pblocks[5];
s->pblocks[5] = tmp;
}
int last_non_b_pict_type; ///< used for mpeg4 gmc b-frames & ratecontrol
int dropable;
int frame_rate_index;
int last_non_b_pict_type; ///< used for mpeg4 gmc b-frames & ratecontrol
int dropable;
int frame_rate_index;
- int frame_rate_ext_n; ///< MPEG-2 specific framerate modificators (numerator)
- int frame_rate_ext_d; ///< MPEG-2 specific framerate modificators (denominator)
/* motion compensation */
int unrestricted_mv; ///< mv can point outside of the coded picture
/* motion compensation */
int unrestricted_mv; ///< mv can point outside of the coded picture