Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in / Register
Toggle navigation
F
ffmpeg.wasm-core
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Linshizhi
ffmpeg.wasm-core
Commits
42c26a48
Commit
42c26a48
authored
Oct 24, 2012
by
Luca Barbato
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
rawvideo: use a specific read_header
ff_raw_read_header is used only for this demuxer for video.
parent
2a91ada8
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
62 additions
and
8 deletions
+62
-8
Makefile
libavformat/Makefile
+1
-1
rawvideodec.c
libavformat/rawvideodec.c
+61
-7
No files found.
libavformat/Makefile
View file @
42c26a48
...
...
@@ -239,7 +239,7 @@ OBJS-$(CONFIG_PMP_DEMUXER) += pmpdec.o
OBJS-$(CONFIG_PVA_DEMUXER)
+=
pva.o
OBJS-$(CONFIG_QCP_DEMUXER)
+=
qcp.o
OBJS-$(CONFIG_R3D_DEMUXER)
+=
r3d.o
OBJS-$(CONFIG_RAWVIDEO_DEMUXER)
+=
rawvideodec.o
rawdec.o
OBJS-$(CONFIG_RAWVIDEO_DEMUXER)
+=
rawvideodec.o
OBJS-$(CONFIG_RAWVIDEO_MUXER)
+=
rawenc.o
OBJS-$(CONFIG_RL2_DEMUXER)
+=
rl2.o
OBJS-$(CONFIG_RM_DEMUXER)
+=
rmdec.o
rm.o
rmsipr.o
...
...
libavformat/rawvideodec.c
View file @
42c26a48
...
...
@@ -19,8 +19,63 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
#include "libavutil/parseutils.h"
#include "libavutil/pixdesc.h"
#include "libavutil/opt.h"
#include "internal.h"
#include "avformat.h"
#include "rawdec.h"
typedef
struct
RawVideoDemuxerContext
{
const
AVClass
*
class
;
/**< Class for private options. */
char
*
video_size
;
/**< String describing video size, set by a private option. */
char
*
pixel_format
;
/**< Set by a private option. */
char
*
framerate
;
/**< String describing framerate, set by a private option. */
}
RawVideoDemuxerContext
;
static
int
rawvideo_read_header
(
AVFormatContext
*
ctx
)
{
RawVideoDemuxerContext
*
s
=
ctx
->
priv_data
;
int
width
=
0
,
height
=
0
,
ret
=
0
;
enum
AVPixelFormat
pix_fmt
;
AVRational
framerate
;
AVStream
*
st
;
st
=
avformat_new_stream
(
ctx
,
NULL
);
if
(
!
st
)
return
AVERROR
(
ENOMEM
);
st
->
codec
->
codec_type
=
AVMEDIA_TYPE_VIDEO
;
st
->
codec
->
codec_id
=
ctx
->
iformat
->
raw_codec_id
;
if
(
s
->
video_size
&&
(
ret
=
av_parse_video_size
(
&
width
,
&
height
,
s
->
video_size
))
<
0
)
{
av_log
(
ctx
,
AV_LOG_ERROR
,
"Couldn't parse video size.
\n
"
);
return
ret
;
}
if
((
pix_fmt
=
av_get_pix_fmt
(
s
->
pixel_format
))
==
AV_PIX_FMT_NONE
)
{
av_log
(
ctx
,
AV_LOG_ERROR
,
"No such pixel format: %s.
\n
"
,
s
->
pixel_format
);
return
AVERROR
(
EINVAL
);
}
if
((
ret
=
av_parse_video_rate
(
&
framerate
,
s
->
framerate
))
<
0
)
{
av_log
(
ctx
,
AV_LOG_ERROR
,
"Could not parse framerate: %s.
\n
"
,
s
->
framerate
);
return
ret
;
}
avpriv_set_pts_info
(
st
,
64
,
framerate
.
den
,
framerate
.
num
);
st
->
codec
->
width
=
width
;
st
->
codec
->
height
=
height
;
st
->
codec
->
pix_fmt
=
pix_fmt
;
return
0
;
}
static
int
rawvideo_read_packet
(
AVFormatContext
*
s
,
AVPacket
*
pkt
)
{
...
...
@@ -34,9 +89,8 @@ static int rawvideo_read_packet(AVFormatContext *s, AVPacket *pkt)
if
(
packet_size
<
0
)
return
-
1
;
ret
=
av_get_packet
(
s
->
pb
,
pkt
,
packet_size
);
pkt
->
pts
=
pkt
->
dts
=
pkt
->
pos
/
packet_size
;
ret
=
av_get_packet
(
s
->
pb
,
pkt
,
packet_size
);
pkt
->
pts
=
pkt
->
dts
=
pkt
->
pos
/
packet_size
;
pkt
->
stream_index
=
0
;
if
(
ret
<
0
)
...
...
@@ -44,7 +98,7 @@ static int rawvideo_read_packet(AVFormatContext *s, AVPacket *pkt)
return
0
;
}
#define OFFSET(x) offsetof(
FF
RawVideoDemuxerContext, x)
#define OFFSET(x) offsetof(RawVideoDemuxerContext, x)
#define DEC AV_OPT_FLAG_DECODING_PARAM
static
const
AVOption
rawvideo_options
[]
=
{
{
"video_size"
,
"A string describing frame size, such as 640x480 or hd720."
,
OFFSET
(
video_size
),
AV_OPT_TYPE_STRING
,
{.
str
=
NULL
},
0
,
0
,
DEC
},
...
...
@@ -63,8 +117,8 @@ static const AVClass rawvideo_demuxer_class = {
AVInputFormat
ff_rawvideo_demuxer
=
{
.
name
=
"rawvideo"
,
.
long_name
=
NULL_IF_CONFIG_SMALL
(
"raw video"
),
.
priv_data_size
=
sizeof
(
FF
RawVideoDemuxerContext
),
.
read_header
=
ff_raw
_read_header
,
.
priv_data_size
=
sizeof
(
RawVideoDemuxerContext
),
.
read_header
=
rawvideo
_read_header
,
.
read_packet
=
rawvideo_read_packet
,
.
flags
=
AVFMT_GENERIC_INDEX
,
.
extensions
=
"yuv,cif,qcif,rgb"
,
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment