Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in / Register
Toggle navigation
F
ffmpeg
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
Packages
Packages
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
submodule
ffmpeg
Commits
6668bc80
Commit
6668bc80
authored
Apr 18, 2016
by
Alexandra Hájková
Committed by
Diego Biurrun
Jan 25, 2017
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
mpc: Convert to the new bitstream reader
parent
b83aea73
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
52 additions
and
47 deletions
+52
-47
mpc7.c
libavcodec/mpc7.c
+39
-34
mpc8.c
libavcodec/mpc8.c
+0
-0
mpc8.c
libavformat/mpc8.c
+13
-13
No files found.
libavcodec/mpc7.c
View file @
6668bc80
...
@@ -28,8 +28,9 @@
...
@@ -28,8 +28,9 @@
#include "libavutil/channel_layout.h"
#include "libavutil/channel_layout.h"
#include "libavutil/internal.h"
#include "libavutil/internal.h"
#include "libavutil/lfg.h"
#include "libavutil/lfg.h"
#include "avcodec.h"
#include "avcodec.h"
#include "
get_bits
.h"
#include "
bitstream
.h"
#include "internal.h"
#include "internal.h"
#include "mpegaudiodsp.h"
#include "mpegaudiodsp.h"
...
@@ -53,7 +54,7 @@ static av_cold int mpc7_decode_init(AVCodecContext * avctx)
...
@@ -53,7 +54,7 @@ static av_cold int mpc7_decode_init(AVCodecContext * avctx)
{
{
int
i
,
j
;
int
i
,
j
;
MPCContext
*
c
=
avctx
->
priv_data
;
MPCContext
*
c
=
avctx
->
priv_data
;
GetBitContext
gb
;
BitstreamContext
bc
;
LOCAL_ALIGNED_16
(
uint8_t
,
buf
,
[
16
]);
LOCAL_ALIGNED_16
(
uint8_t
,
buf
,
[
16
]);
static
int
vlc_initialized
=
0
;
static
int
vlc_initialized
=
0
;
...
@@ -78,18 +79,18 @@ static av_cold int mpc7_decode_init(AVCodecContext * avctx)
...
@@ -78,18 +79,18 @@ static av_cold int mpc7_decode_init(AVCodecContext * avctx)
ff_mpadsp_init
(
&
c
->
mpadsp
);
ff_mpadsp_init
(
&
c
->
mpadsp
);
c
->
bdsp
.
bswap_buf
((
uint32_t
*
)
buf
,
(
const
uint32_t
*
)
avctx
->
extradata
,
4
);
c
->
bdsp
.
bswap_buf
((
uint32_t
*
)
buf
,
(
const
uint32_t
*
)
avctx
->
extradata
,
4
);
ff_mpc_init
();
ff_mpc_init
();
init_get_bits
(
&
gb
,
buf
,
128
);
bitstream_init
(
&
bc
,
buf
,
128
);
c
->
IS
=
get_bits1
(
&
gb
);
c
->
IS
=
bitstream_read_bit
(
&
bc
);
c
->
MSS
=
get_bits1
(
&
gb
);
c
->
MSS
=
bitstream_read_bit
(
&
bc
);
c
->
maxbands
=
get_bits
(
&
gb
,
6
);
c
->
maxbands
=
bitstream_read
(
&
bc
,
6
);
if
(
c
->
maxbands
>=
BANDS
){
if
(
c
->
maxbands
>=
BANDS
){
av_log
(
avctx
,
AV_LOG_ERROR
,
"Too many bands: %i
\n
"
,
c
->
maxbands
);
av_log
(
avctx
,
AV_LOG_ERROR
,
"Too many bands: %i
\n
"
,
c
->
maxbands
);
return
-
1
;
return
-
1
;
}
}
skip_bits_long
(
&
gb
,
88
);
bitstream_skip
(
&
bc
,
88
);
c
->
gapless
=
get_bits1
(
&
gb
);
c
->
gapless
=
bitstream_read_bit
(
&
bc
);
c
->
lastframelen
=
get_bits
(
&
gb
,
11
);
c
->
lastframelen
=
bitstream_read
(
&
bc
,
11
);
av_log
(
avctx
,
AV_LOG_DEBUG
,
"IS: %d, MSS: %d, TG: %d, LFL: %d, bands: %d
\n
"
,
av_log
(
avctx
,
AV_LOG_DEBUG
,
"IS: %d, MSS: %d, TG: %d, LFL: %d, bands: %d
\n
"
,
c
->
IS
,
c
->
MSS
,
c
->
gapless
,
c
->
lastframelen
,
c
->
maxbands
);
c
->
IS
,
c
->
MSS
,
c
->
gapless
,
c
->
lastframelen
,
c
->
maxbands
);
c
->
frames_to_skip
=
0
;
c
->
frames_to_skip
=
0
;
...
@@ -143,7 +144,7 @@ static av_cold int mpc7_decode_init(AVCodecContext * avctx)
...
@@ -143,7 +144,7 @@ static av_cold int mpc7_decode_init(AVCodecContext * avctx)
/**
/**
* Fill samples for given subband
* Fill samples for given subband
*/
*/
static
inline
void
idx_to_quant
(
MPCContext
*
c
,
GetBitContext
*
gb
,
int
idx
,
int
*
dst
)
static
inline
void
idx_to_quant
(
MPCContext
*
c
,
BitstreamContext
*
bc
,
int
idx
,
int
*
dst
)
{
{
int
i
,
i1
,
t
;
int
i
,
i1
,
t
;
switch
(
idx
){
switch
(
idx
){
...
@@ -153,43 +154,43 @@ static inline void idx_to_quant(MPCContext *c, GetBitContext *gb, int idx, int *
...
@@ -153,43 +154,43 @@ static inline void idx_to_quant(MPCContext *c, GetBitContext *gb, int idx, int *
}
}
break
;
break
;
case
1
:
case
1
:
i1
=
get_bits1
(
gb
);
i1
=
bitstream_read_bit
(
bc
);
for
(
i
=
0
;
i
<
SAMPLES_PER_BAND
/
3
;
i
++
){
for
(
i
=
0
;
i
<
SAMPLES_PER_BAND
/
3
;
i
++
){
t
=
get_vlc2
(
gb
,
quant_vlc
[
0
][
i1
].
table
,
9
,
2
);
t
=
bitstream_read_vlc
(
bc
,
quant_vlc
[
0
][
i1
].
table
,
9
,
2
);
*
dst
++
=
mpc7_idx30
[
t
];
*
dst
++
=
mpc7_idx30
[
t
];
*
dst
++
=
mpc7_idx31
[
t
];
*
dst
++
=
mpc7_idx31
[
t
];
*
dst
++
=
mpc7_idx32
[
t
];
*
dst
++
=
mpc7_idx32
[
t
];
}
}
break
;
break
;
case
2
:
case
2
:
i1
=
get_bits1
(
gb
);
i1
=
bitstream_read_bit
(
bc
);
for
(
i
=
0
;
i
<
SAMPLES_PER_BAND
/
2
;
i
++
){
for
(
i
=
0
;
i
<
SAMPLES_PER_BAND
/
2
;
i
++
){
t
=
get_vlc2
(
gb
,
quant_vlc
[
1
][
i1
].
table
,
9
,
2
);
t
=
bitstream_read_vlc
(
bc
,
quant_vlc
[
1
][
i1
].
table
,
9
,
2
);
*
dst
++
=
mpc7_idx50
[
t
];
*
dst
++
=
mpc7_idx50
[
t
];
*
dst
++
=
mpc7_idx51
[
t
];
*
dst
++
=
mpc7_idx51
[
t
];
}
}
break
;
break
;
case
3
:
case
4
:
case
5
:
case
6
:
case
7
:
case
3
:
case
4
:
case
5
:
case
6
:
case
7
:
i1
=
get_bits1
(
gb
);
i1
=
bitstream_read_bit
(
bc
);
for
(
i
=
0
;
i
<
SAMPLES_PER_BAND
;
i
++
)
for
(
i
=
0
;
i
<
SAMPLES_PER_BAND
;
i
++
)
*
dst
++
=
get_vlc2
(
gb
,
quant_vlc
[
idx
-
1
][
i1
].
table
,
9
,
2
)
-
mpc7_quant_vlc_off
[
idx
-
1
];
*
dst
++
=
bitstream_read_vlc
(
bc
,
quant_vlc
[
idx
-
1
][
i1
].
table
,
9
,
2
)
-
mpc7_quant_vlc_off
[
idx
-
1
];
break
;
break
;
case
8
:
case
9
:
case
10
:
case
11
:
case
12
:
case
8
:
case
9
:
case
10
:
case
11
:
case
12
:
case
13
:
case
14
:
case
15
:
case
16
:
case
17
:
case
13
:
case
14
:
case
15
:
case
16
:
case
17
:
t
=
(
1
<<
(
idx
-
2
))
-
1
;
t
=
(
1
<<
(
idx
-
2
))
-
1
;
for
(
i
=
0
;
i
<
SAMPLES_PER_BAND
;
i
++
)
for
(
i
=
0
;
i
<
SAMPLES_PER_BAND
;
i
++
)
*
dst
++
=
get_bits
(
gb
,
idx
-
1
)
-
t
;
*
dst
++
=
bitstream_read
(
bc
,
idx
-
1
)
-
t
;
break
;
break
;
default:
// case 0 and -2..-17
default:
// case 0 and -2..-17
return
;
return
;
}
}
}
}
static
int
get_scale_idx
(
GetBitContext
*
gb
,
int
ref
)
static
int
get_scale_idx
(
BitstreamContext
*
bc
,
int
ref
)
{
{
int
t
=
get_vlc2
(
gb
,
dscf_vlc
.
table
,
MPC7_DSCF_BITS
,
1
)
-
7
;
int
t
=
bitstream_read_vlc
(
bc
,
dscf_vlc
.
table
,
MPC7_DSCF_BITS
,
1
)
-
7
;
if
(
t
==
8
)
if
(
t
==
8
)
return
get_bits
(
gb
,
6
);
return
bitstream_read
(
bc
,
6
);
return
av_clip_uintp2
(
ref
+
t
,
7
);
return
av_clip_uintp2
(
ref
+
t
,
7
);
}
}
...
@@ -200,7 +201,7 @@ static int mpc7_decode_frame(AVCodecContext * avctx, void *data,
...
@@ -200,7 +201,7 @@ static int mpc7_decode_frame(AVCodecContext * avctx, void *data,
const
uint8_t
*
buf
=
avpkt
->
data
;
const
uint8_t
*
buf
=
avpkt
->
data
;
int
buf_size
;
int
buf_size
;
MPCContext
*
c
=
avctx
->
priv_data
;
MPCContext
*
c
=
avctx
->
priv_data
;
GetBitContext
gb
;
BitstreamContext
bc
;
int
i
,
ch
;
int
i
,
ch
;
int
mb
=
-
1
;
int
mb
=
-
1
;
Band
*
bands
=
c
->
bands
;
Band
*
bands
=
c
->
bands
;
...
@@ -237,45 +238,49 @@ static int mpc7_decode_frame(AVCodecContext * avctx, void *data,
...
@@ -237,45 +238,49 @@ static int mpc7_decode_frame(AVCodecContext * avctx, void *data,
return
AVERROR
(
ENOMEM
);
return
AVERROR
(
ENOMEM
);
c
->
bdsp
.
bswap_buf
((
uint32_t
*
)
c
->
bits
,
(
const
uint32_t
*
)
buf
,
c
->
bdsp
.
bswap_buf
((
uint32_t
*
)
c
->
bits
,
(
const
uint32_t
*
)
buf
,
buf_size
>>
2
);
buf_size
>>
2
);
init_get_bits
(
&
gb
,
c
->
bits
,
buf_size
*
8
);
bitstream_init
(
&
bc
,
c
->
bits
,
buf_size
*
8
);
skip_bits_long
(
&
gb
,
skip
);
bitstream_skip
(
&
bc
,
skip
);
/* read subband indexes */
/* read subband indexes */
for
(
i
=
0
;
i
<=
c
->
maxbands
;
i
++
){
for
(
i
=
0
;
i
<=
c
->
maxbands
;
i
++
){
for
(
ch
=
0
;
ch
<
2
;
ch
++
){
for
(
ch
=
0
;
ch
<
2
;
ch
++
){
int
t
=
4
;
int
t
=
4
;
if
(
i
)
t
=
get_vlc2
(
&
gb
,
hdr_vlc
.
table
,
MPC7_HDR_BITS
,
1
)
-
5
;
if
(
i
)
if
(
t
==
4
)
bands
[
i
].
res
[
ch
]
=
get_bits
(
&
gb
,
4
);
t
=
bitstream_read_vlc
(
&
bc
,
hdr_vlc
.
table
,
MPC7_HDR_BITS
,
1
)
-
5
;
if
(
t
==
4
)
bands
[
i
].
res
[
ch
]
=
bitstream_read
(
&
bc
,
4
);
else
bands
[
i
].
res
[
ch
]
=
av_clip
(
bands
[
i
-
1
].
res
[
ch
]
+
t
,
0
,
17
);
else
bands
[
i
].
res
[
ch
]
=
av_clip
(
bands
[
i
-
1
].
res
[
ch
]
+
t
,
0
,
17
);
}
}
if
(
bands
[
i
].
res
[
0
]
||
bands
[
i
].
res
[
1
]){
if
(
bands
[
i
].
res
[
0
]
||
bands
[
i
].
res
[
1
]){
mb
=
i
;
mb
=
i
;
if
(
c
->
MSS
)
bands
[
i
].
msf
=
get_bits1
(
&
gb
);
if
(
c
->
MSS
)
bands
[
i
].
msf
=
bitstream_read_bit
(
&
bc
);
}
}
}
}
/* get scale indexes coding method */
/* get scale indexes coding method */
for
(
i
=
0
;
i
<=
mb
;
i
++
)
for
(
i
=
0
;
i
<=
mb
;
i
++
)
for
(
ch
=
0
;
ch
<
2
;
ch
++
)
for
(
ch
=
0
;
ch
<
2
;
ch
++
)
if
(
bands
[
i
].
res
[
ch
])
bands
[
i
].
scfi
[
ch
]
=
get_vlc2
(
&
gb
,
scfi_vlc
.
table
,
MPC7_SCFI_BITS
,
1
);
if
(
bands
[
i
].
res
[
ch
])
bands
[
i
].
scfi
[
ch
]
=
bitstream_read_vlc
(
&
bc
,
scfi_vlc
.
table
,
MPC7_SCFI_BITS
,
1
);
/* get scale indexes */
/* get scale indexes */
for
(
i
=
0
;
i
<=
mb
;
i
++
){
for
(
i
=
0
;
i
<=
mb
;
i
++
){
for
(
ch
=
0
;
ch
<
2
;
ch
++
){
for
(
ch
=
0
;
ch
<
2
;
ch
++
){
if
(
bands
[
i
].
res
[
ch
]){
if
(
bands
[
i
].
res
[
ch
]){
bands
[
i
].
scf_idx
[
ch
][
2
]
=
c
->
oldDSCF
[
ch
][
i
];
bands
[
i
].
scf_idx
[
ch
][
2
]
=
c
->
oldDSCF
[
ch
][
i
];
bands
[
i
].
scf_idx
[
ch
][
0
]
=
get_scale_idx
(
&
gb
,
bands
[
i
].
scf_idx
[
ch
][
2
]);
bands
[
i
].
scf_idx
[
ch
][
0
]
=
get_scale_idx
(
&
bc
,
bands
[
i
].
scf_idx
[
ch
][
2
]);
switch
(
bands
[
i
].
scfi
[
ch
]){
switch
(
bands
[
i
].
scfi
[
ch
]){
case
0
:
case
0
:
bands
[
i
].
scf_idx
[
ch
][
1
]
=
get_scale_idx
(
&
gb
,
bands
[
i
].
scf_idx
[
ch
][
0
]);
bands
[
i
].
scf_idx
[
ch
][
1
]
=
get_scale_idx
(
&
bc
,
bands
[
i
].
scf_idx
[
ch
][
0
]);
bands
[
i
].
scf_idx
[
ch
][
2
]
=
get_scale_idx
(
&
gb
,
bands
[
i
].
scf_idx
[
ch
][
1
]);
bands
[
i
].
scf_idx
[
ch
][
2
]
=
get_scale_idx
(
&
bc
,
bands
[
i
].
scf_idx
[
ch
][
1
]);
break
;
break
;
case
1
:
case
1
:
bands
[
i
].
scf_idx
[
ch
][
1
]
=
get_scale_idx
(
&
gb
,
bands
[
i
].
scf_idx
[
ch
][
0
]);
bands
[
i
].
scf_idx
[
ch
][
1
]
=
get_scale_idx
(
&
bc
,
bands
[
i
].
scf_idx
[
ch
][
0
]);
bands
[
i
].
scf_idx
[
ch
][
2
]
=
bands
[
i
].
scf_idx
[
ch
][
1
];
bands
[
i
].
scf_idx
[
ch
][
2
]
=
bands
[
i
].
scf_idx
[
ch
][
1
];
break
;
break
;
case
2
:
case
2
:
bands
[
i
].
scf_idx
[
ch
][
1
]
=
bands
[
i
].
scf_idx
[
ch
][
0
];
bands
[
i
].
scf_idx
[
ch
][
1
]
=
bands
[
i
].
scf_idx
[
ch
][
0
];
bands
[
i
].
scf_idx
[
ch
][
2
]
=
get_scale_idx
(
&
gb
,
bands
[
i
].
scf_idx
[
ch
][
1
]);
bands
[
i
].
scf_idx
[
ch
][
2
]
=
get_scale_idx
(
&
bc
,
bands
[
i
].
scf_idx
[
ch
][
1
]);
break
;
break
;
case
3
:
case
3
:
bands
[
i
].
scf_idx
[
ch
][
2
]
=
bands
[
i
].
scf_idx
[
ch
][
1
]
=
bands
[
i
].
scf_idx
[
ch
][
0
];
bands
[
i
].
scf_idx
[
ch
][
2
]
=
bands
[
i
].
scf_idx
[
ch
][
1
]
=
bands
[
i
].
scf_idx
[
ch
][
0
];
...
@@ -290,11 +295,11 @@ static int mpc7_decode_frame(AVCodecContext * avctx, void *data,
...
@@ -290,11 +295,11 @@ static int mpc7_decode_frame(AVCodecContext * avctx, void *data,
off
=
0
;
off
=
0
;
for
(
i
=
0
;
i
<
BANDS
;
i
++
,
off
+=
SAMPLES_PER_BAND
)
for
(
i
=
0
;
i
<
BANDS
;
i
++
,
off
+=
SAMPLES_PER_BAND
)
for
(
ch
=
0
;
ch
<
2
;
ch
++
)
for
(
ch
=
0
;
ch
<
2
;
ch
++
)
idx_to_quant
(
c
,
&
gb
,
bands
[
i
].
res
[
ch
],
c
->
Q
[
ch
]
+
off
);
idx_to_quant
(
c
,
&
bc
,
bands
[
i
].
res
[
ch
],
c
->
Q
[
ch
]
+
off
);
ff_mpc_dequantize_and_synth
(
c
,
mb
,
(
int16_t
**
)
frame
->
extended_data
,
2
);
ff_mpc_dequantize_and_synth
(
c
,
mb
,
(
int16_t
**
)
frame
->
extended_data
,
2
);
bits_used
=
get_bits_count
(
&
gb
);
bits_used
=
bitstream_tell
(
&
bc
);
bits_avail
=
buf_size
*
8
;
bits_avail
=
buf_size
*
8
;
if
(
!
last_frame
&&
((
bits_avail
<
bits_used
)
||
(
bits_used
+
32
<=
bits_avail
)))
{
if
(
!
last_frame
&&
((
bits_avail
<
bits_used
)
||
(
bits_used
+
32
<=
bits_avail
)))
{
av_log
(
avctx
,
AV_LOG_ERROR
,
"Error decoding frame: used %i of %i bits
\n
"
,
bits_used
,
bits_avail
);
av_log
(
avctx
,
AV_LOG_ERROR
,
"Error decoding frame: used %i of %i bits
\n
"
,
bits_used
,
bits_avail
);
...
...
libavcodec/mpc8.c
View file @
6668bc80
This diff is collapsed.
Click to expand it.
libavformat/mpc8.c
View file @
6668bc80
...
@@ -19,8 +19,8 @@
...
@@ -19,8 +19,8 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
*/
#include "libavcodec/
get_bits
.h"
#include "libavcodec/
bitstream
.h"
#include "libavcodec/unary
_legacy
.h"
#include "libavcodec/unary.h"
#include "apetag.h"
#include "apetag.h"
#include "avformat.h"
#include "avformat.h"
...
@@ -107,17 +107,17 @@ static int mpc8_probe(AVProbeData *p)
...
@@ -107,17 +107,17 @@ static int mpc8_probe(AVProbeData *p)
return
0
;
return
0
;
}
}
static
inline
int64_t
gb_get_v
(
GetBitContext
*
gb
)
static
inline
int64_t
gb_get_v
(
BitstreamContext
*
bc
)
{
{
int64_t
v
=
0
;
int64_t
v
=
0
;
int
bits
=
0
;
int
bits
=
0
;
while
(
get_bits1
(
gb
)
&&
bits
<
64
-
7
)
{
while
(
bitstream_read_bit
(
bc
)
&&
bits
<
64
-
7
)
{
v
<<=
7
;
v
<<=
7
;
v
|=
get_bits
(
gb
,
7
);
v
|=
bitstream_read
(
bc
,
7
);
bits
+=
7
;
bits
+=
7
;
}
}
v
<<=
7
;
v
<<=
7
;
v
|=
get_bits
(
gb
,
7
);
v
|=
bitstream_read
(
bc
,
7
);
return
v
;
return
v
;
}
}
...
@@ -138,7 +138,7 @@ static void mpc8_parse_seektable(AVFormatContext *s, int64_t off)
...
@@ -138,7 +138,7 @@ static void mpc8_parse_seektable(AVFormatContext *s, int64_t off)
int64_t
size
,
pos
,
ppos
[
2
];
int64_t
size
,
pos
,
ppos
[
2
];
uint8_t
*
buf
;
uint8_t
*
buf
;
int
i
,
t
,
seekd
;
int
i
,
t
,
seekd
;
GetBitContext
gb
;
BitstreamContext
bc
;
if
(
s
->
nb_streams
==
0
)
{
if
(
s
->
nb_streams
==
0
)
{
av_log
(
s
,
AV_LOG_ERROR
,
"No stream added before parsing seek table
\n
"
);
av_log
(
s
,
AV_LOG_ERROR
,
"No stream added before parsing seek table
\n
"
);
...
@@ -158,21 +158,21 @@ static void mpc8_parse_seektable(AVFormatContext *s, int64_t off)
...
@@ -158,21 +158,21 @@ static void mpc8_parse_seektable(AVFormatContext *s, int64_t off)
if
(
!
(
buf
=
av_malloc
(
size
+
AV_INPUT_BUFFER_PADDING_SIZE
)))
if
(
!
(
buf
=
av_malloc
(
size
+
AV_INPUT_BUFFER_PADDING_SIZE
)))
return
;
return
;
avio_read
(
s
->
pb
,
buf
,
size
);
avio_read
(
s
->
pb
,
buf
,
size
);
init_get_bits
(
&
gb
,
buf
,
size
*
8
);
bitstream_init8
(
&
bc
,
buf
,
size
);
size
=
gb_get_v
(
&
gb
);
size
=
gb_get_v
(
&
bc
);
if
(
size
>
UINT_MAX
/
4
||
size
>
c
->
samples
/
1152
){
if
(
size
>
UINT_MAX
/
4
||
size
>
c
->
samples
/
1152
){
av_log
(
s
,
AV_LOG_ERROR
,
"Seek table is too big
\n
"
);
av_log
(
s
,
AV_LOG_ERROR
,
"Seek table is too big
\n
"
);
return
;
return
;
}
}
seekd
=
get_bits
(
&
gb
,
4
);
seekd
=
bitstream_read
(
&
bc
,
4
);
for
(
i
=
0
;
i
<
2
;
i
++
){
for
(
i
=
0
;
i
<
2
;
i
++
){
pos
=
gb_get_v
(
&
gb
)
+
c
->
header_pos
;
pos
=
gb_get_v
(
&
bc
)
+
c
->
header_pos
;
ppos
[
1
-
i
]
=
pos
;
ppos
[
1
-
i
]
=
pos
;
av_add_index_entry
(
s
->
streams
[
0
],
pos
,
i
,
0
,
0
,
AVINDEX_KEYFRAME
);
av_add_index_entry
(
s
->
streams
[
0
],
pos
,
i
,
0
,
0
,
AVINDEX_KEYFRAME
);
}
}
for
(;
i
<
size
;
i
++
){
for
(;
i
<
size
;
i
++
){
t
=
get_unary
(
&
gb
,
1
,
33
)
<<
12
;
t
=
get_unary
(
&
bc
,
1
,
33
)
<<
12
;
t
+=
get_bits
(
&
gb
,
12
);
t
+=
bitstream_read
(
&
bc
,
12
);
if
(
t
&
1
)
if
(
t
&
1
)
t
=
-
(
t
&
~
1
);
t
=
-
(
t
&
~
1
);
pos
=
(
t
>>
1
)
+
ppos
[
0
]
*
2
-
ppos
[
1
];
pos
=
(
t
>>
1
)
+
ppos
[
0
]
*
2
-
ppos
[
1
];
...
...
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