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
f5f1cf52
Commit
f5f1cf52
authored
Dec 21, 2012
by
Luca Barbato
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
oggdec: K&R cosmetic formatting
parent
7e98956e
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
128 additions
and
117 deletions
+128
-117
oggdec.c
libavformat/oggdec.c
+128
-117
No files found.
libavformat/oggdec.c
View file @
f5f1cf52
...
...
@@ -60,18 +60,18 @@ static int ogg_save(AVFormatContext *s)
{
struct
ogg
*
ogg
=
s
->
priv_data
;
struct
ogg_state
*
ost
=
av_malloc
(
sizeof
(
*
ost
)
+
(
ogg
->
nstreams
-
1
)
*
sizeof
(
*
ogg
->
streams
));
av_malloc
(
sizeof
(
*
ost
)
+
(
ogg
->
nstreams
-
1
)
*
sizeof
(
*
ogg
->
streams
));
int
i
;
ost
->
pos
=
avio_tell
(
s
->
pb
);
ost
->
pos
=
avio_tell
(
s
->
pb
);
ost
->
curidx
=
ogg
->
curidx
;
ost
->
next
=
ogg
->
state
;
ost
->
nstreams
=
ogg
->
nstreams
;
memcpy
(
ost
->
streams
,
ogg
->
streams
,
ogg
->
nstreams
*
sizeof
(
*
ogg
->
streams
));
for
(
i
=
0
;
i
<
ogg
->
nstreams
;
i
++
){
for
(
i
=
0
;
i
<
ogg
->
nstreams
;
i
++
)
{
struct
ogg_stream
*
os
=
ogg
->
streams
+
i
;
os
->
buf
=
av_mallocz
(
os
->
bufsize
+
FF_INPUT_BUFFER_PADDING_SIZE
);
memcpy
(
os
->
buf
,
ost
->
streams
[
i
].
buf
,
os
->
bufpos
);
os
->
buf
=
av_mallocz
(
os
->
bufsize
+
FF_INPUT_BUFFER_PADDING_SIZE
);
memcpy
(
os
->
buf
,
ost
->
streams
[
i
].
buf
,
os
->
bufpos
);
}
ogg
->
state
=
ost
;
...
...
@@ -91,17 +91,17 @@ static int ogg_restore(AVFormatContext *s, int discard)
ogg
->
state
=
ost
->
next
;
if
(
!
discard
){
if
(
!
discard
)
{
struct
ogg_stream
*
old_streams
=
ogg
->
streams
;
for
(
i
=
0
;
i
<
ogg
->
nstreams
;
i
++
)
av_free
(
ogg
->
streams
[
i
].
buf
);
av_free
(
ogg
->
streams
[
i
].
buf
);
avio_seek
(
bc
,
ost
->
pos
,
SEEK_SET
);
avio_seek
(
bc
,
ost
->
pos
,
SEEK_SET
);
ogg
->
curidx
=
ost
->
curidx
;
ogg
->
nstreams
=
ost
->
nstreams
;
ogg
->
streams
=
av_realloc
(
ogg
->
streams
,
ogg
->
nstreams
*
sizeof
(
*
ogg
->
streams
));
ogg
->
streams
=
av_realloc
(
ogg
->
streams
,
ogg
->
nstreams
*
sizeof
(
*
ogg
->
streams
));
if
(
ogg
->
streams
)
{
memcpy
(
ogg
->
streams
,
ost
->
streams
,
...
...
@@ -112,7 +112,7 @@ static int ogg_restore(AVFormatContext *s, int discard)
}
}
av_free
(
ost
);
av_free
(
ost
);
return
0
;
}
...
...
@@ -121,7 +121,7 @@ static int ogg_reset(struct ogg *ogg)
{
int
i
;
for
(
i
=
0
;
i
<
ogg
->
nstreams
;
i
++
){
for
(
i
=
0
;
i
<
ogg
->
nstreams
;
i
++
)
{
struct
ogg_stream
*
os
=
ogg
->
streams
+
i
;
os
->
bufpos
=
0
;
os
->
pstart
=
0
;
...
...
@@ -147,7 +147,7 @@ static const struct ogg_codec *ogg_find_codec(uint8_t *buf, int size)
for
(
i
=
0
;
ogg_codecs
[
i
];
i
++
)
if
(
size
>=
ogg_codecs
[
i
]
->
magicsize
&&
!
memcmp
(
buf
,
ogg_codecs
[
i
]
->
magic
,
ogg_codecs
[
i
]
->
magicsize
))
!
memcmp
(
buf
,
ogg_codecs
[
i
]
->
magic
,
ogg_codecs
[
i
]
->
magicsize
))
return
ogg_codecs
[
i
];
return
NULL
;
...
...
@@ -155,15 +155,15 @@ static const struct ogg_codec *ogg_find_codec(uint8_t *buf, int size)
static
int
ogg_new_stream
(
AVFormatContext
*
s
,
uint32_t
serial
,
int
new_avstream
)
{
struct
ogg
*
ogg
=
s
->
priv_data
;
int
idx
=
ogg
->
nstreams
++
;
AVStream
*
st
;
struct
ogg_stream
*
os
;
ogg
->
streams
=
av_realloc
(
ogg
->
streams
,
ogg
->
nstreams
*
sizeof
(
*
ogg
->
streams
));
memset
(
ogg
->
streams
+
idx
,
0
,
sizeof
(
*
ogg
->
streams
));
ogg
->
streams
=
av_realloc
(
ogg
->
streams
,
ogg
->
nstreams
*
sizeof
(
*
ogg
->
streams
));
memset
(
ogg
->
streams
+
idx
,
0
,
sizeof
(
*
ogg
->
streams
));
os
=
ogg
->
streams
+
idx
;
os
->
serial
=
serial
;
os
->
bufsize
=
DECODER_BUFFER_SIZE
;
...
...
@@ -188,10 +188,12 @@ static int ogg_new_buf(struct ogg *ogg, int idx)
struct
ogg_stream
*
os
=
ogg
->
streams
+
idx
;
uint8_t
*
nb
=
av_malloc
(
os
->
bufsize
+
FF_INPUT_BUFFER_PADDING_SIZE
);
int
size
=
os
->
bufpos
-
os
->
pstart
;
if
(
os
->
buf
){
if
(
os
->
buf
)
{
memcpy
(
nb
,
os
->
buf
+
os
->
pstart
,
size
);
av_free
(
os
->
buf
);
}
os
->
buf
=
nb
;
os
->
bufpos
=
size
;
os
->
pstart
=
0
;
...
...
@@ -216,7 +218,7 @@ static int ogg_read_page(AVFormatContext *s, int *str)
if
(
ret
<
4
)
return
ret
<
0
?
ret
:
AVERROR_EOF
;
do
{
do
{
int
c
;
if
(
sync
[
sp
&
3
]
==
'O'
&&
...
...
@@ -225,13 +227,15 @@ static int ogg_read_page(AVFormatContext *s, int *str)
break
;
c
=
avio_r8
(
bc
);
if
(
bc
->
eof_reached
)
return
AVERROR_EOF
;
sync
[
sp
++
&
3
]
=
c
;
}
while
(
i
++
<
MAX_PAGE_SIZE
);
}
while
(
i
++
<
MAX_PAGE_SIZE
);
if
(
i
>=
MAX_PAGE_SIZE
){
av_log
(
s
,
AV_LOG_INFO
,
"ogg, can'
t find sync word
\n
"
);
if
(
i
>=
MAX_PAGE_SIZE
)
{
av_log
(
s
,
AV_LOG_INFO
,
"canno
t find sync word
\n
"
);
return
AVERROR_INVALIDDATA
;
}
...
...
@@ -239,23 +243,26 @@ static int ogg_read_page(AVFormatContext *s, int *str)
return
AVERROR_INVALIDDATA
;
flags
=
avio_r8
(
bc
);
gp
=
avio_rl64
(
bc
);
serial
=
avio_rl32
(
bc
);
gp
=
avio_rl64
(
bc
);
serial
=
avio_rl32
(
bc
);
avio_skip
(
bc
,
8
);
/* seq, crc */
nsegs
=
avio_r8
(
bc
);
idx
=
ogg_find_stream
(
ogg
,
serial
);
if
(
idx
<
0
){
idx
=
ogg_find_stream
(
ogg
,
serial
);
if
(
idx
<
0
)
{
if
(
ogg
->
headers
)
{
int
n
;
for
(
n
=
0
;
n
<
ogg
->
nstreams
;
n
++
)
{
av_freep
(
&
ogg
->
streams
[
n
].
buf
);
if
(
!
ogg
->
state
||
ogg
->
state
->
streams
[
n
].
private
!=
ogg
->
streams
[
n
].
private
)
if
(
!
ogg
->
state
||
ogg
->
state
->
streams
[
n
].
private
!=
ogg
->
streams
[
n
].
private
)
av_freep
(
&
ogg
->
streams
[
n
].
private
);
}
ogg
->
curidx
=
-
1
;
ogg
->
nstreams
=
0
;
idx
=
ogg_new_stream
(
s
,
serial
,
0
);
}
else
{
idx
=
ogg_new_stream
(
s
,
serial
,
1
);
...
...
@@ -267,7 +274,7 @@ static int ogg_read_page(AVFormatContext *s, int *str)
os
=
ogg
->
streams
+
idx
;
os
->
page_pos
=
avio_tell
(
bc
)
-
27
;
if
(
os
->
psize
>
0
)
if
(
os
->
psize
>
0
)
ogg_new_buf
(
ogg
,
idx
);
ret
=
avio_read
(
bc
,
os
->
segments
,
nsegs
);
...
...
@@ -281,9 +288,9 @@ static int ogg_read_page(AVFormatContext *s, int *str)
for
(
i
=
0
;
i
<
nsegs
;
i
++
)
size
+=
os
->
segments
[
i
];
if
(
flags
&
OGG_FLAG_CONT
||
os
->
incomplete
){
if
(
!
os
->
psize
){
while
(
os
->
segp
<
os
->
nsegs
){
if
(
flags
&
OGG_FLAG_CONT
||
os
->
incomplete
)
{
if
(
!
os
->
psize
)
{
while
(
os
->
segp
<
os
->
nsegs
)
{
int
seg
=
os
->
segments
[
os
->
segp
++
];
os
->
pstart
+=
seg
;
if
(
seg
<
255
)
...
...
@@ -291,15 +298,15 @@ static int ogg_read_page(AVFormatContext *s, int *str)
}
os
->
sync_pos
=
os
->
page_pos
;
}
}
else
{
}
else
{
os
->
psize
=
0
;
os
->
sync_pos
=
os
->
page_pos
;
}
if
(
os
->
bufsize
-
os
->
bufpos
<
size
){
uint8_t
*
nb
=
av_malloc
((
os
->
bufsize
*=
2
)
+
FF_INPUT_BUFFER_PADDING_SIZE
);
memcpy
(
nb
,
os
->
buf
,
os
->
bufpos
);
av_free
(
os
->
buf
);
if
(
os
->
bufsize
-
os
->
bufpos
<
size
)
{
uint8_t
*
nb
=
av_malloc
((
os
->
bufsize
*=
2
)
+
FF_INPUT_BUFFER_PADDING_SIZE
);
memcpy
(
nb
,
os
->
buf
,
os
->
bufpos
);
av_free
(
os
->
buf
);
os
->
buf
=
nb
;
}
...
...
@@ -329,10 +336,10 @@ static int ogg_packet(AVFormatContext *s, int *str, int *dstart, int *dsize,
av_dlog
(
s
,
"ogg_packet: curidx=%i
\n
"
,
ogg
->
curidx
);
do
{
do
{
idx
=
ogg
->
curidx
;
while
(
idx
<
0
){
while
(
idx
<
0
)
{
ret
=
ogg_read_page
(
s
,
&
idx
);
if
(
ret
<
0
)
return
ret
;
...
...
@@ -343,15 +350,15 @@ static int ogg_packet(AVFormatContext *s, int *str, int *dstart, int *dsize,
av_dlog
(
s
,
"ogg_packet: idx=%d pstart=%d psize=%d segp=%d nsegs=%d
\n
"
,
idx
,
os
->
pstart
,
os
->
psize
,
os
->
segp
,
os
->
nsegs
);
if
(
!
os
->
codec
){
if
(
os
->
header
<
0
){
os
->
codec
=
ogg_find_codec
(
os
->
buf
,
os
->
bufpos
);
if
(
!
os
->
codec
){
if
(
!
os
->
codec
)
{
if
(
os
->
header
<
0
)
{
os
->
codec
=
ogg_find_codec
(
os
->
buf
,
os
->
bufpos
);
if
(
!
os
->
codec
)
{
av_log
(
s
,
AV_LOG_WARNING
,
"Codec not found
\n
"
);
os
->
header
=
0
;
return
0
;
}
}
else
{
}
else
{
return
0
;
}
}
...
...
@@ -359,33 +366,35 @@ static int ogg_packet(AVFormatContext *s, int *str, int *dstart, int *dsize,
segp
=
os
->
segp
;
psize
=
os
->
psize
;
while
(
os
->
segp
<
os
->
nsegs
){
while
(
os
->
segp
<
os
->
nsegs
)
{
int
ss
=
os
->
segments
[
os
->
segp
++
];
os
->
psize
+=
ss
;
if
(
ss
<
255
){
if
(
ss
<
255
)
{
complete
=
1
;
break
;
}
}
if
(
!
complete
&&
os
->
segp
==
os
->
nsegs
){
if
(
!
complete
&&
os
->
segp
==
os
->
nsegs
)
{
ogg
->
curidx
=
-
1
;
os
->
incomplete
=
1
;
}
}
while
(
!
complete
);
}
while
(
!
complete
);
av_dlog
(
s
,
"ogg_packet: idx %i, frame size %i, start %i
\n
"
,
idx
,
os
->
psize
,
os
->
pstart
);
if
(
os
->
granule
==
-
1
)
av_log
(
s
,
AV_LOG_WARNING
,
"Page at %"
PRId64
" is missing granule
\n
"
,
os
->
page_pos
);
av_log
(
s
,
AV_LOG_WARNING
,
"Page at %"
PRId64
" is missing granule
\n
"
,
os
->
page_pos
);
ogg
->
curidx
=
idx
;
os
->
incomplete
=
0
;
if
(
os
->
header
)
{
os
->
header
=
os
->
codec
->
header
(
s
,
idx
);
if
(
!
os
->
header
){
os
->
header
=
os
->
codec
->
header
(
s
,
idx
);
if
(
!
os
->
header
)
{
os
->
segp
=
segp
;
os
->
psize
=
psize
;
...
...
@@ -398,6 +407,7 @@ static int ogg_packet(AVFormatContext *s, int *str, int *dstart, int *dsize,
// compute the data_offset.
if
(
!
s
->
data_offset
)
s
->
data_offset
=
os
->
sync_pos
;
for
(
i
=
0
;
i
<
ogg
->
nstreams
;
i
++
)
{
struct
ogg_stream
*
cur_os
=
ogg
->
streams
+
i
;
...
...
@@ -406,7 +416,7 @@ static int ogg_packet(AVFormatContext *s, int *str, int *dstart, int *dsize,
if
(
cur_os
->
incomplete
)
s
->
data_offset
=
FFMIN
(
s
->
data_offset
,
cur_os
->
sync_pos
);
}
}
else
{
}
else
{
os
->
nb_header
++
;
os
->
pstart
+=
os
->
psize
;
os
->
psize
=
0
;
...
...
@@ -415,7 +425,7 @@ static int ogg_packet(AVFormatContext *s, int *str, int *dstart, int *dsize,
os
->
pflags
=
0
;
os
->
pduration
=
0
;
if
(
os
->
codec
&&
os
->
codec
->
packet
)
os
->
codec
->
packet
(
s
,
idx
);
os
->
codec
->
packet
(
s
,
idx
);
if
(
str
)
*
str
=
idx
;
if
(
dstart
)
...
...
@@ -449,11 +459,11 @@ static int ogg_get_headers(AVFormatContext *s)
struct
ogg
*
ogg
=
s
->
priv_data
;
int
ret
,
i
;
do
{
do
{
ret
=
ogg_packet
(
s
,
NULL
,
NULL
,
NULL
,
NULL
);
if
(
ret
<
0
)
return
ret
;
}
while
(
!
ogg
->
headers
);
}
while
(
!
ogg
->
headers
);
for
(
i
=
0
;
i
<
ogg
->
nstreams
;
i
++
)
{
struct
ogg_stream
*
os
=
ogg
->
streams
+
i
;
...
...
@@ -479,7 +489,7 @@ static int ogg_get_length(AVFormatContext *s)
int
i
;
int64_t
size
,
end
;
if
(
!
s
->
pb
->
seekable
)
if
(
!
s
->
pb
->
seekable
)
return
0
;
// already set
...
...
@@ -487,24 +497,24 @@ static int ogg_get_length(AVFormatContext *s)
return
0
;
size
=
avio_size
(
s
->
pb
);
if
(
size
<
0
)
if
(
size
<
0
)
return
0
;
end
=
size
>
MAX_PAGE_SIZE
?
size
-
MAX_PAGE_SIZE
:
0
;
end
=
size
>
MAX_PAGE_SIZE
?
size
-
MAX_PAGE_SIZE
:
0
;
ogg_save
(
s
);
avio_seek
(
s
->
pb
,
end
,
SEEK_SET
);
ogg_save
(
s
);
avio_seek
(
s
->
pb
,
end
,
SEEK_SET
);
while
(
!
ogg_read_page
(
s
,
&
i
))
{
while
(
!
ogg_read_page
(
s
,
&
i
))
{
if
(
ogg
->
streams
[
i
].
granule
!=
-
1
&&
ogg
->
streams
[
i
].
granule
!=
0
&&
ogg
->
streams
[
i
].
codec
)
{
s
->
streams
[
i
]
->
duration
=
ogg_gptopts
(
s
,
i
,
ogg
->
streams
[
i
].
granule
,
NULL
);
ogg_gptopts
(
s
,
i
,
ogg
->
streams
[
i
].
granule
,
NULL
);
if
(
s
->
streams
[
i
]
->
start_time
!=
AV_NOPTS_VALUE
)
s
->
streams
[
i
]
->
duration
-=
s
->
streams
[
i
]
->
start_time
;
}
}
ogg_restore
(
s
,
0
);
ogg_restore
(
s
,
0
);
return
0
;
}
...
...
@@ -524,7 +534,7 @@ static int ogg_read_header(AVFormatContext *s)
ogg
->
streams
[
i
].
codec
=
NULL
;
//linear granulepos seek from end
ogg_get_length
(
s
);
ogg_get_length
(
s
);
//fill the extradata in the per codec callbacks
return
0
;
...
...
@@ -570,11 +580,11 @@ static int ogg_read_packet(AVFormatContext *s, AVPacket *pkt)
//Get an ogg packet
retry:
do
{
do
{
ret
=
ogg_packet
(
s
,
&
idx
,
&
pstart
,
&
psize
,
&
fpos
);
if
(
ret
<
0
)
return
ret
;
}
while
(
idx
<
0
||
!
s
->
streams
[
idx
]);
}
while
(
idx
<
0
||
!
s
->
streams
[
idx
]);
ogg
=
s
->
priv_data
;
os
=
ogg
->
streams
+
idx
;
...
...
@@ -591,7 +601,7 @@ retry:
if
(
ret
<
0
)
return
ret
;
pkt
->
stream_index
=
idx
;
memcpy
(
pkt
->
data
,
os
->
buf
+
pstart
,
psize
);
memcpy
(
pkt
->
data
,
os
->
buf
+
pstart
,
psize
);
pkt
->
pts
=
pts
;
pkt
->
dts
=
dts
;
...
...
@@ -607,11 +617,11 @@ static int ogg_read_close(AVFormatContext *s)
struct
ogg
*
ogg
=
s
->
priv_data
;
int
i
;
for
(
i
=
0
;
i
<
ogg
->
nstreams
;
i
++
){
av_free
(
ogg
->
streams
[
i
].
buf
);
av_free
(
ogg
->
streams
[
i
].
private
);
for
(
i
=
0
;
i
<
ogg
->
nstreams
;
i
++
)
{
av_free
(
ogg
->
streams
[
i
].
buf
);
av_free
(
ogg
->
streams
[
i
].
private
);
}
av_free
(
ogg
->
streams
);
av_free
(
ogg
->
streams
);
return
0
;
}
...
...
@@ -625,7 +635,8 @@ static int64_t ogg_read_timestamp(AVFormatContext *s, int stream_index,
avio_seek
(
bc
,
*
pos_arg
,
SEEK_SET
);
ogg_reset
(
ogg
);
while
(
avio_tell
(
bc
)
<
pos_limit
&&
!
ogg_packet
(
s
,
&
i
,
NULL
,
NULL
,
pos_arg
))
{
while
(
avio_tell
(
bc
)
<
pos_limit
&&
!
ogg_packet
(
s
,
&
i
,
NULL
,
NULL
,
pos_arg
))
{
if
(
i
==
stream_index
)
{
struct
ogg_stream
*
os
=
ogg
->
streams
+
stream_index
;
pts
=
ogg_calc_pts
(
s
,
i
,
NULL
);
...
...
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