b47a5a95 |
/*
* RAW Ingenient MJPEG demuxer
* Copyright (c) 2005 Alex Beregszaszi
*
* This file is part of FFmpeg.
*
* FFmpeg is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* FFmpeg is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with FFmpeg; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
#include "avformat.h" |
4ca31edc |
#include "rawdec.h" |
b47a5a95 |
// http://www.artificis.hu/files/texts/ingenient.txt
static int ingenient_read_packet(AVFormatContext *s, AVPacket *pkt)
{
int ret, size, w, h, unk1, unk2;
|
b7effd4e |
if (avio_rl32(s->pb) != MKTAG('M', 'J', 'P', 'G')) |
b47a5a95 |
return AVERROR(EIO); // FIXME
|
b7effd4e |
size = avio_rl32(s->pb); |
b47a5a95 |
|
b7effd4e |
w = avio_rl16(s->pb);
h = avio_rl16(s->pb); |
b47a5a95 |
|
45a8a02a |
avio_skip(s->pb, 8); // zero + size (padded?)
avio_skip(s->pb, 2); |
b7effd4e |
unk1 = avio_rl16(s->pb);
unk2 = avio_rl16(s->pb); |
45a8a02a |
avio_skip(s->pb, 22); // ASCII timestamp |
b47a5a95 |
av_log(s, AV_LOG_DEBUG, "Ingenient packet: size=%d, width=%d, height=%d, unk1=%d unk2=%d\n",
size, w, h, unk1, unk2);
|
8f63f241 |
ret = av_get_packet(s->pb, pkt, size);
if (ret < 0) |
b47a5a95 |
return ret; |
8f63f241 |
pkt->stream_index = 0; |
b47a5a95 |
return ret;
}
|
85d982f1 |
FF_RAWVIDEO_DEMUXER_CLASS(ingenient)
|
c6610a21 |
AVInputFormat ff_ingenient_demuxer = { |
dfc2c4d9 |
.name = "ingenient",
.long_name = NULL_IF_CONFIG_SMALL("raw Ingenient MJPEG"),
.priv_data_size = sizeof(FFRawVideoDemuxerContext),
.read_header = ff_raw_video_read_header,
.read_packet = ingenient_read_packet, |
20234a4b |
.flags = AVFMT_GENERIC_INDEX,
.extensions = "cgi", // FIXME |
36ef5369 |
.raw_codec_id = AV_CODEC_ID_MJPEG, |
85d982f1 |
.priv_class = &ingenient_demuxer_class, |
b47a5a95 |
}; |