summaryrefslogtreecommitdiff
path: root/contrib/ffmpeg/libavformat/segafilm.c
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/ffmpeg/libavformat/segafilm.c')
-rw-r--r--contrib/ffmpeg/libavformat/segafilm.c51
1 files changed, 18 insertions, 33 deletions
diff --git a/contrib/ffmpeg/libavformat/segafilm.c b/contrib/ffmpeg/libavformat/segafilm.c
index 4feb97262..b5375ccf7 100644
--- a/contrib/ffmpeg/libavformat/segafilm.c
+++ b/contrib/ffmpeg/libavformat/segafilm.c
@@ -58,8 +58,6 @@ typedef struct FilmDemuxContext {
unsigned int base_clock;
unsigned int version;
- int cvid_extra_bytes; /* the number of bytes thrown into the Cinepak
- * chunk header to throw off decoders */
/* buffer used for interleaving stereo PCM data */
unsigned char *stereo_buffer;
@@ -71,7 +69,7 @@ static int film_probe(AVProbeData *p)
if (p->buf_size < 4)
return 0;
- if (BE_32(&p->buf[0]) != FILM_TAG)
+ if (AV_RB32(&p->buf[0]) != FILM_TAG)
return 0;
return AVPROBE_SCORE_MAX;
@@ -95,8 +93,8 @@ static int film_read_header(AVFormatContext *s,
/* load the main FILM header */
if (get_buffer(pb, scratch, 16) != 16)
return AVERROR_IO;
- data_offset = BE_32(&scratch[4]);
- film->version = BE_32(&scratch[8]);
+ data_offset = AV_RB32(&scratch[4]);
+ film->version = AV_RB32(&scratch[8]);
/* load the FDSC chunk */
if (film->version == 0) {
@@ -112,7 +110,7 @@ static int film_read_header(AVFormatContext *s,
/* normal Saturn .cpk files; 32-byte header */
if (get_buffer(pb, scratch, 32) != 32)
return AVERROR_IO;
- film->audio_samplerate = BE_16(&scratch[24]);;
+ film->audio_samplerate = AV_RB16(&scratch[24]);;
film->audio_channels = scratch[21];
film->audio_bits = scratch[22];
if (film->audio_bits == 8)
@@ -123,16 +121,11 @@ static int film_read_header(AVFormatContext *s,
film->audio_type = 0;
}
- if (BE_32(&scratch[0]) != FDSC_TAG)
+ if (AV_RB32(&scratch[0]) != FDSC_TAG)
return AVERROR_INVALIDDATA;
- film->cvid_extra_bytes = 0;
- if (BE_32(&scratch[8]) == CVID_TAG) {
+ if (AV_RB32(&scratch[8]) == CVID_TAG) {
film->video_type = CODEC_ID_CINEPAK;
- if (film->version)
- film->cvid_extra_bytes = 2;
- else
- film->cvid_extra_bytes = 6; /* Lemmings 3DO case */
} else
film->video_type = 0;
@@ -145,8 +138,8 @@ static int film_read_header(AVFormatContext *s,
st->codec->codec_type = CODEC_TYPE_VIDEO;
st->codec->codec_id = film->video_type;
st->codec->codec_tag = 0; /* no fourcc */
- st->codec->width = BE_32(&scratch[16]);
- st->codec->height = BE_32(&scratch[12]);
+ st->codec->width = AV_RB32(&scratch[16]);
+ st->codec->height = AV_RB32(&scratch[12]);
}
if (film->audio_type) {
@@ -169,10 +162,10 @@ static int film_read_header(AVFormatContext *s,
/* load the sample table */
if (get_buffer(pb, scratch, 16) != 16)
return AVERROR_IO;
- if (BE_32(&scratch[0]) != STAB_TAG)
+ if (AV_RB32(&scratch[0]) != STAB_TAG)
return AVERROR_INVALIDDATA;
- film->base_clock = BE_32(&scratch[8]);
- film->sample_count = BE_32(&scratch[12]);
+ film->base_clock = AV_RB32(&scratch[8]);
+ film->sample_count = AV_RB32(&scratch[12]);
if(film->sample_count >= UINT_MAX / sizeof(film_sample_t))
return -1;
film->sample_table = av_malloc(film->sample_count * sizeof(film_sample_t));
@@ -188,9 +181,9 @@ static int film_read_header(AVFormatContext *s,
return AVERROR_IO;
}
film->sample_table[i].sample_offset =
- data_offset + BE_32(&scratch[0]);
- film->sample_table[i].sample_size = BE_32(&scratch[4]);
- if (BE_32(&scratch[8]) == 0xFFFFFFFF) {
+ data_offset + AV_RB32(&scratch[0]);
+ film->sample_table[i].sample_size = AV_RB32(&scratch[4]);
+ if (AV_RB32(&scratch[8]) == 0xFFFFFFFF) {
film->sample_table[i].stream = film->audio_stream_index;
film->sample_table[i].pts = audio_frame_counter;
film->sample_table[i].pts *= film->base_clock;
@@ -200,7 +193,7 @@ static int film_read_header(AVFormatContext *s,
(film->audio_channels * film->audio_bits / 8));
} else {
film->sample_table[i].stream = film->video_stream_index;
- film->sample_table[i].pts = BE_32(&scratch[8]) & 0x7FFFFFFF;
+ film->sample_table[i].pts = AV_RB32(&scratch[8]) & 0x7FFFFFFF;
film->sample_table[i].keyframe = (scratch[8] & 0x80) ? 0 : 1;
}
}
@@ -231,18 +224,10 @@ static int film_read_packet(AVFormatContext *s,
/* do a special song and dance when loading FILM Cinepak chunks */
if ((sample->stream == film->video_stream_index) &&
(film->video_type == CODEC_ID_CINEPAK)) {
- if (av_new_packet(pkt, sample->sample_size - film->cvid_extra_bytes))
- return AVERROR_NOMEM;
- if(pkt->size < 10)
- return -1;
pkt->pos= url_ftell(pb);
- ret = get_buffer(pb, pkt->data, 10);
- /* skip the non-spec CVID bytes */
- url_fseek(pb, film->cvid_extra_bytes, SEEK_CUR);
- ret += get_buffer(pb, pkt->data + 10,
- sample->sample_size - 10 - film->cvid_extra_bytes);
- if (ret != sample->sample_size - film->cvid_extra_bytes)
- ret = AVERROR_IO;
+ if (av_new_packet(pkt, sample->sample_size))
+ return AVERROR_NOMEM;
+ get_buffer(pb, pkt->data, sample->sample_size);
} else if ((sample->stream == film->audio_stream_index) &&
(film->audio_channels == 2)) {
/* stereo PCM needs to be interleaved */