|
|
@ -140,6 +140,8 @@ static int ffm_write_header(AVFormatContext *s) |
|
|
|
|
|
|
|
|
|
|
|
/* list of streams */ |
|
|
|
/* list of streams */ |
|
|
|
for(i=0;i<s->nb_streams;i++) { |
|
|
|
for(i=0;i<s->nb_streams;i++) { |
|
|
|
|
|
|
|
int gcd; |
|
|
|
|
|
|
|
|
|
|
|
st = s->streams[i]; |
|
|
|
st = s->streams[i]; |
|
|
|
fst = av_mallocz(sizeof(FFMStream)); |
|
|
|
fst = av_mallocz(sizeof(FFMStream)); |
|
|
|
if (!fst) |
|
|
|
if (!fst) |
|
|
@ -156,7 +158,9 @@ static int ffm_write_header(AVFormatContext *s) |
|
|
|
/* specific info */ |
|
|
|
/* specific info */ |
|
|
|
switch(codec->codec_type) { |
|
|
|
switch(codec->codec_type) { |
|
|
|
case CODEC_TYPE_VIDEO: |
|
|
|
case CODEC_TYPE_VIDEO: |
|
|
|
put_be32(pb, (codec->frame_rate * 1000) / FRAME_RATE_BASE); |
|
|
|
gcd= av_gcd(FRAME_RATE_BASE, codec->frame_rate); |
|
|
|
|
|
|
|
put_be32(pb, FRAME_RATE_BASE / gcd); |
|
|
|
|
|
|
|
put_be32(pb, codec->frame_rate / gcd); |
|
|
|
put_be16(pb, codec->width); |
|
|
|
put_be16(pb, codec->width); |
|
|
|
put_be16(pb, codec->height); |
|
|
|
put_be16(pb, codec->height); |
|
|
|
put_be16(pb, codec->gop_size); |
|
|
|
put_be16(pb, codec->gop_size); |
|
|
@ -390,6 +394,7 @@ static int ffm_read_header(AVFormatContext *s, AVFormatParameters *ap) |
|
|
|
/* read each stream */ |
|
|
|
/* read each stream */ |
|
|
|
for(i=0;i<s->nb_streams;i++) { |
|
|
|
for(i=0;i<s->nb_streams;i++) { |
|
|
|
char rc_eq_buf[128]; |
|
|
|
char rc_eq_buf[128]; |
|
|
|
|
|
|
|
int rate, scale; |
|
|
|
|
|
|
|
|
|
|
|
st = av_mallocz(sizeof(AVStream)); |
|
|
|
st = av_mallocz(sizeof(AVStream)); |
|
|
|
if (!st) |
|
|
|
if (!st) |
|
|
@ -411,7 +416,9 @@ static int ffm_read_header(AVFormatContext *s, AVFormatParameters *ap) |
|
|
|
/* specific info */ |
|
|
|
/* specific info */ |
|
|
|
switch(codec->codec_type) { |
|
|
|
switch(codec->codec_type) { |
|
|
|
case CODEC_TYPE_VIDEO: |
|
|
|
case CODEC_TYPE_VIDEO: |
|
|
|
codec->frame_rate = ((int64_t)get_be32(pb) * FRAME_RATE_BASE) / 1000; |
|
|
|
scale= get_be32(pb); |
|
|
|
|
|
|
|
rate= get_be32(pb); |
|
|
|
|
|
|
|
codec->frame_rate = (rate * (int64_t)FRAME_RATE_BASE) / scale; |
|
|
|
codec->width = get_be16(pb); |
|
|
|
codec->width = get_be16(pb); |
|
|
|
codec->height = get_be16(pb); |
|
|
|
codec->height = get_be16(pb); |
|
|
|
codec->gop_size = get_be16(pb); |
|
|
|
codec->gop_size = get_be16(pb); |
|
|
|