Mercurial > libavformat.hg
changeset 2327:768d27bac3c1 libavformat
make StreamContext.time_base a pointer
author | michael |
---|---|
date | Thu, 09 Aug 2007 11:04:43 +0000 |
parents | e05364bd370c |
children | 3569ee98f2e2 |
files | nut.h nutdec.c nutenc.c |
diffstat | 3 files changed, 15 insertions(+), 16 deletions(-) [+] |
line wrap: on
line diff
--- a/nut.h Thu Aug 09 10:57:10 2007 +0000 +++ b/nut.h Thu Aug 09 11:04:43 2007 +0000 @@ -72,7 +72,7 @@ int skip_until_key_frame; int64_t last_pts; int time_base_id; - AVRational time_base; + AVRational *time_base; int msb_pts_shift; int max_pts_distance; int decode_delay; //FIXME duplicate of has_b_frames
--- a/nutdec.c Thu Aug 09 10:57:10 2007 +0000 +++ b/nutdec.c Thu Aug 09 11:04:43 2007 +0000 @@ -288,7 +288,7 @@ end= get_packetheader(nut, bc, 1); end += url_ftell(bc); - GET_V(stream_id, tmp < s->nb_streams && !nut->stream[tmp].time_base.num); + GET_V(stream_id, tmp < s->nb_streams && !nut->stream[tmp].time_base); stc= &nut->stream[stream_id]; st = s->streams[stream_id]; @@ -358,8 +358,8 @@ av_log(s, AV_LOG_ERROR, "Stream header %d checksum mismatch\n", stream_id); return -1; } - stc->time_base= nut->time_base[stc->time_base_id]; - av_set_pts_info(s->streams[stream_id], 63, stc->time_base.num, stc->time_base.den); + stc->time_base= &nut->time_base[stc->time_base_id]; + av_set_pts_info(s->streams[stream_id], 63, stc->time_base->num, stc->time_base->den); return 0; } @@ -461,8 +461,8 @@ for(i=0; i<s->nb_streams; i++){ nut->stream[i].last_pts= av_rescale_rnd( tmp / nut->time_base_count, - time_base.num * (int64_t)nut->stream[i].time_base.den, - time_base.den * (int64_t)nut->stream[i].time_base.num, + time_base.num * (int64_t)nut->stream[i].time_base->den, + time_base.den * (int64_t)nut->stream[i].time_base->num, AV_ROUND_DOWN); //last_key_frame ? }
--- a/nutenc.c Thu Aug 09 10:57:10 2007 +0000 +++ b/nutenc.c Thu Aug 09 11:04:43 2007 +0000 @@ -236,29 +236,28 @@ for(i=0; i<s->nb_streams; i++){ AVStream *st= s->streams[i]; - int num, denom, ssize; - ff_parse_specific_params(st->codec, &num, &ssize, &denom); + int ssize; + AVRational time_base; + ff_parse_specific_params(st->codec, &time_base.den, &ssize, &time_base.num); - nut->stream[i].time_base= (AVRational){denom, num}; - - av_set_pts_info(st, 64, denom, num); + av_set_pts_info(st, 64, time_base.num, time_base.den); for(j=0; j<nut->time_base_count; j++){ - if(!memcmp(&nut->stream[i].time_base, &nut->time_base[j], sizeof(AVRational))){ + if(!memcmp(&time_base, &nut->time_base[j], sizeof(AVRational))){ break; } } - nut->time_base[j]= nut->stream[i].time_base; + nut->time_base[j]= time_base; + nut->stream[i].time_base= &nut->time_base[j]; if(j==nut->time_base_count) nut->time_base_count++; - if(av_q2d(nut->stream[i].time_base) >= 0.001) + if(av_q2d(time_base) >= 0.001) nut->stream[i].msb_pts_shift = 7; else nut->stream[i].msb_pts_shift = 14; - nut->stream[i].max_pts_distance= FFMAX(1/av_q2d(nut->stream[i].time_base), 1); + nut->stream[i].max_pts_distance= FFMAX(1/av_q2d(time_base), 1); } -//FIXME make nut->stream[i].time_base pointers into nut->time_base put_buffer(bc, ID_STRING, strlen(ID_STRING)); put_byte(bc, 0);