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
35bffd7f
Commit
35bffd7f
authored
Feb 03, 2007
by
Kostya Shishkov
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
VC-1 parser
Originally committed as revision 7809 to
svn://svn.ffmpeg.org/ffmpeg/trunk
parent
ca454440
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
95 additions
and
2 deletions
+95
-2
allcodecs.c
libavcodec/allcodecs.c
+1
-0
avcodec.h
libavcodec/avcodec.h
+3
-2
vc1.c
libavcodec/vc1.c
+91
-0
No files found.
libavcodec/allcodecs.c
View file @
35bffd7f
...
...
@@ -254,6 +254,7 @@ void avcodec_register_all(void)
REGISTER_PARSER
(
MPEGAUDIO
,
mpegaudio
);
REGISTER_PARSER
(
MPEGVIDEO
,
mpegvideo
);
REGISTER_PARSER
(
PNM
,
pnm
);
REGISTER_PARSER
(
VC1
,
vc1
);
av_register_bitstream_filter
(
&
dump_extradata_bsf
);
av_register_bitstream_filter
(
&
remove_extradata_bsf
);
...
...
libavcodec/avcodec.h
View file @
35bffd7f
...
...
@@ -37,8 +37,8 @@ extern "C" {
#define AV_STRINGIFY(s) AV_TOSTRING(s)
#define AV_TOSTRING(s) #s
#define LIBAVCODEC_VERSION_INT ((51<<16)+(
29
<<8)+0)
#define LIBAVCODEC_VERSION 51.
29
.0
#define LIBAVCODEC_VERSION_INT ((51<<16)+(
30
<<8)+0)
#define LIBAVCODEC_VERSION 51.
30
.0
#define LIBAVCODEC_BUILD LIBAVCODEC_VERSION_INT
#define LIBAVCODEC_IDENT "Lavc" AV_STRINGIFY(LIBAVCODEC_VERSION)
...
...
@@ -2637,6 +2637,7 @@ extern AVCodecParser mpeg4video_parser;
extern
AVCodecParser
mpegaudio_parser
;
extern
AVCodecParser
mpegvideo_parser
;
extern
AVCodecParser
pnm_parser
;
extern
AVCodecParser
vc1_parser
;
typedef
struct
AVBitStreamFilterContext
{
...
...
libavcodec/vc1.c
View file @
35bffd7f
...
...
@@ -4474,3 +4474,94 @@ AVCodec wmv3_decoder = {
CODEC_CAP_DELAY
,
NULL
};
#ifdef CONFIG_VC1_PARSER
/**
* finds the end of the current frame in the bitstream.
* @return the position of the first byte of the next frame, or -1
*/
static
int
vc1_find_frame_end
(
ParseContext
*
pc
,
const
uint8_t
*
buf
,
int
buf_size
)
{
int
pic_found
,
i
;
uint32_t
state
;
pic_found
=
pc
->
frame_start_found
;
state
=
pc
->
state
;
i
=
0
;
if
(
!
pic_found
){
for
(
i
=
0
;
i
<
buf_size
;
i
++
){
state
=
(
state
<<
8
)
|
buf
[
i
];
if
(
state
==
VC1_CODE_FRAME
||
state
==
VC1_CODE_FIELD
){
i
++
;
pic_found
=
1
;
break
;
}
}
}
if
(
pic_found
){
/* EOF considered as end of frame */
if
(
buf_size
==
0
)
return
0
;
for
(;
i
<
buf_size
;
i
++
){
state
=
(
state
<<
8
)
|
buf
[
i
];
if
(
IS_MARKER
(
state
)
&&
state
!=
VC1_CODE_FIELD
&&
state
!=
VC1_CODE_SLICE
){
pc
->
frame_start_found
=
0
;
pc
->
state
=-
1
;
return
i
-
3
;
}
}
}
pc
->
frame_start_found
=
pic_found
;
pc
->
state
=
state
;
return
END_NOT_FOUND
;
}
static
int
vc1_parse
(
AVCodecParserContext
*
s
,
AVCodecContext
*
avctx
,
uint8_t
**
poutbuf
,
int
*
poutbuf_size
,
const
uint8_t
*
buf
,
int
buf_size
)
{
ParseContext
*
pc
=
s
->
priv_data
;
int
next
;
if
(
s
->
flags
&
PARSER_FLAG_COMPLETE_FRAMES
){
next
=
buf_size
;
}
else
{
next
=
vc1_find_frame_end
(
pc
,
buf
,
buf_size
);
if
(
ff_combine_frame
(
pc
,
next
,
(
uint8_t
**
)
&
buf
,
&
buf_size
)
<
0
)
{
*
poutbuf
=
NULL
;
*
poutbuf_size
=
0
;
return
buf_size
;
}
}
*
poutbuf
=
(
uint8_t
*
)
buf
;
*
poutbuf_size
=
buf_size
;
return
next
;
}
int
vc1_split
(
AVCodecContext
*
avctx
,
const
uint8_t
*
buf
,
int
buf_size
)
{
int
i
;
uint32_t
state
=
-
1
;
for
(
i
=
0
;
i
<
buf_size
;
i
++
){
state
=
(
state
<<
8
)
|
buf
[
i
];
if
(
IS_MARKER
(
state
)
&&
state
!=
VC1_CODE_SEQHDR
&&
state
!=
VC1_CODE_ENTRYPOINT
)
return
i
-
3
;
}
return
0
;
}
AVCodecParser
vc1_parser
=
{
{
CODEC_ID_VC1
},
sizeof
(
ParseContext1
),
NULL
,
vc1_parse
,
ff_parse1_close
,
vc1_split
,
};
#endif
/* CONFIG_VC1_PARSER */
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