FFmpeg
Main Page
Related Pages
Modules
Namespaces
Data Structures
Files
Examples
File List
Globals
•
All
Data Structures
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Groups
Pages
libavformat
ingenientdec.c
Go to the documentation of this file.
1
/*
2
* RAW Ingenient MJPEG demuxer
3
* Copyright (c) 2005 Alex Beregszaszi
4
*
5
* This file is part of FFmpeg.
6
*
7
* FFmpeg is free software; you can redistribute it and/or
8
* modify it under the terms of the GNU Lesser General Public
9
* License as published by the Free Software Foundation; either
10
* version 2.1 of the License, or (at your option) any later version.
11
*
12
* FFmpeg is distributed in the hope that it will be useful,
13
* but WITHOUT ANY WARRANTY; without even the implied warranty of
14
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15
* Lesser General Public License for more details.
16
*
17
* You should have received a copy of the GNU Lesser General Public
18
* License along with FFmpeg; if not, write to the Free Software
19
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
20
*/
21
22
#include "
avformat.h
"
23
#include "
rawdec.h
"
24
25
// http://www.artificis.hu/files/texts/ingenient.txt
26
static
int
ingenient_read_packet
(
AVFormatContext
*
s
,
AVPacket
*
pkt
)
27
{
28
int
ret
,
size
, w, h, unk1, unk2;
29
30
if
(
avio_rl32
(s->
pb
) !=
MKTAG
(
'M'
,
'J'
,
'P'
,
'G'
))
31
return
AVERROR
(EIO);
// FIXME
32
33
size =
avio_rl32
(s->
pb
);
34
35
w =
avio_rl16
(s->
pb
);
36
h =
avio_rl16
(s->
pb
);
37
38
avio_skip
(s->
pb
, 8);
// zero + size (padded?)
39
avio_skip
(s->
pb
, 2);
40
unk1 =
avio_rl16
(s->
pb
);
41
unk2 =
avio_rl16
(s->
pb
);
42
avio_skip
(s->
pb
, 22);
// ASCII timestamp
43
44
av_log
(s,
AV_LOG_DEBUG
,
"Ingenient packet: size=%d, width=%d, height=%d, unk1=%d unk2=%d\n"
,
45
size, w, h, unk1, unk2);
46
47
ret =
av_get_packet
(s->
pb
, pkt, size);
48
if
(ret < 0)
49
return
ret
;
50
pkt->
stream_index
= 0;
51
return
ret
;
52
}
53
54
FF_RAWVIDEO_DEMUXER_CLASS
(ingenient)
55
56
AVInputFormat
ff_ingenient_demuxer
= {
57
.
name
=
"ingenient"
,
58
.long_name =
NULL_IF_CONFIG_SMALL
(
"raw Ingenient MJPEG"
),
59
.priv_data_size =
sizeof
(
FFRawVideoDemuxerContext
),
60
.
read_header
=
ff_raw_video_read_header
,
61
.
read_packet
=
ingenient_read_packet
,
62
.
flags
=
AVFMT_GENERIC_INDEX
,
63
.extensions =
"cgi"
,
// FIXME
64
.raw_codec_id =
AV_CODEC_ID_MJPEG
,
65
.priv_class = &ingenient_demuxer_class,
66
};
Generated on Sat Jan 25 2014 19:52:02 for FFmpeg by
1.8.2