avformat/rmenc: Remove float usage

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
Michael Niedermayer 2015-06-07 21:50:21 +02:00
parent 4c4c3d5d5a
commit 0dbea4642f

View File

@ -29,7 +29,7 @@ typedef struct StreamInfo {
int packet_max_size; int packet_max_size;
/* codec related output */ /* codec related output */
int bit_rate; int bit_rate;
float frame_rate; AVRational frame_rate;
int nb_frames; /* current frame number */ int nb_frames; /* current frame number */
int total_frames; /* total number of frames */ int total_frames; /* total number of frames */
int num; int num;
@ -102,7 +102,7 @@ static int rv10_write_header(AVFormatContext *ctx,
nb_packets += stream->nb_packets; nb_packets += stream->nb_packets;
packet_total_size += stream->packet_total_size; packet_total_size += stream->packet_total_size;
/* select maximum duration */ /* select maximum duration */
v = 1000LL * stream->total_frames / stream->frame_rate; v = av_rescale_q_rnd(stream->total_frames, (AVRational){1000, 1}, stream->frame_rate, AV_ROUND_ZERO);
if (v > duration) if (v > duration)
duration = v; duration = v;
} }
@ -178,7 +178,7 @@ static int rv10_write_header(AVFormatContext *ctx,
if (!s->seekable || !stream->total_frames) if (!s->seekable || !stream->total_frames)
avio_wb32(s, (int)(3600 * 1000)); avio_wb32(s, (int)(3600 * 1000));
else else
avio_wb32(s, (int)(stream->total_frames * 1000 / stream->frame_rate)); avio_wb32(s, av_rescale_q_rnd(stream->total_frames, (AVRational){1000, 1}, stream->frame_rate, AV_ROUND_ZERO));
put_str8(s, desc); put_str8(s, desc);
put_str8(s, mimetype); put_str8(s, mimetype);
avio_wb32(s, codec_data_size); avio_wb32(s, codec_data_size);
@ -252,9 +252,9 @@ static int rv10_write_header(AVFormatContext *ctx,
ffio_wfourcc(s,"RV20"); ffio_wfourcc(s,"RV20");
avio_wb16(s, stream->enc->width); avio_wb16(s, stream->enc->width);
avio_wb16(s, stream->enc->height); avio_wb16(s, stream->enc->height);
avio_wb16(s, (int) stream->frame_rate); /* frames per seconds ? */ avio_wb16(s, stream->frame_rate.num / stream->frame_rate.den); /* frames per seconds ? */
avio_wb32(s,0); /* unknown meaning */ avio_wb32(s,0); /* unknown meaning */
avio_wb16(s, (int) stream->frame_rate); /* unknown meaning */ avio_wb16(s, stream->frame_rate.num / stream->frame_rate.den); /* unknown meaning */
avio_wb32(s,0); /* unknown meaning */ avio_wb32(s,0); /* unknown meaning */
avio_wb16(s, 8); /* unknown meaning */ avio_wb16(s, 8); /* unknown meaning */
/* Seems to be the codec version: only use basic H263. The next /* Seems to be the codec version: only use basic H263. The next
@ -300,7 +300,7 @@ static void write_packet_header(AVFormatContext *ctx, StreamInfo *stream,
avio_wb16(s,0); /* version */ avio_wb16(s,0); /* version */
avio_wb16(s,length + 12); avio_wb16(s,length + 12);
avio_wb16(s, stream->num); /* stream number */ avio_wb16(s, stream->num); /* stream number */
timestamp = (1000 * (float)stream->nb_frames) / stream->frame_rate; timestamp = av_rescale_q_rnd(stream->nb_frames, (AVRational){1000, 1}, stream->frame_rate, AV_ROUND_ZERO);
avio_wb32(s, timestamp); /* timestamp */ avio_wb32(s, timestamp); /* timestamp */
avio_w8(s, 0); /* reserved */ avio_w8(s, 0); /* reserved */
avio_w8(s, key_frame ? 2 : 0); /* flags */ avio_w8(s, key_frame ? 2 : 0); /* flags */
@ -332,7 +332,7 @@ static int rm_write_header(AVFormatContext *s)
switch(codec->codec_type) { switch(codec->codec_type) {
case AVMEDIA_TYPE_AUDIO: case AVMEDIA_TYPE_AUDIO:
rm->audio_stream = stream; rm->audio_stream = stream;
stream->frame_rate = (float)codec->sample_rate / (float)codec->frame_size; stream->frame_rate = (AVRational){codec->sample_rate, codec->frame_size};
/* XXX: dummy values */ /* XXX: dummy values */
stream->packet_max_size = 1024; stream->packet_max_size = 1024;
stream->nb_packets = 0; stream->nb_packets = 0;
@ -341,7 +341,7 @@ static int rm_write_header(AVFormatContext *s)
case AVMEDIA_TYPE_VIDEO: case AVMEDIA_TYPE_VIDEO:
rm->video_stream = stream; rm->video_stream = stream;
// TODO: should be avg_frame_rate // TODO: should be avg_frame_rate
stream->frame_rate = (float)st->time_base.den / (float)st->time_base.num; stream->frame_rate = av_inv_q(st->time_base);
/* XXX: dummy values */ /* XXX: dummy values */
stream->packet_max_size = 4096; stream->packet_max_size = 4096;
stream->nb_packets = 0; stream->nb_packets = 0;