Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
Xiph.Org
Cortado
Commits
4313e0f9
Commit
4313e0f9
authored
Mar 14, 2010
by
ogg.k.ogg.k
Browse files
allow granpos to time as soon as the first header is decoded
parent
217defbc
Changes
3
Hide whitespace changes
Inline
Side-by-side
src/com/fluendo/jheora/Info.java
View file @
4313e0f9
...
...
@@ -48,6 +48,7 @@ public class Info {
public
byte
version_minor
;
public
byte
version_subminor
;
public
int
keyframe_granule_shift
;
public
long
keyframe_frequency_force
;
/* codec_setup_info */
...
...
@@ -108,7 +109,8 @@ public class Info {
target_bitrate
=
opb
.
readB
(
24
);
quality
=
opb
.
readB
(
6
);
keyframe_frequency_force
=
1
<<
opb
.
readB
(
5
);
keyframe_granule_shift
=
opb
.
readB
(
5
);
keyframe_frequency_force
=
1
<<
keyframe_granule_shift
;
pixel_fmt
=
PixelFormat
.
formats
[
opb
.
readB
(
2
)];
if
(
pixel_fmt
==
PixelFormat
.
TH_PF_RSVD
)
...
...
src/com/fluendo/plugin/KateDec.java
View file @
4313e0f9
...
...
@@ -47,6 +47,7 @@ public class KateDec extends Element implements OggPayload
private
long
basetime
=
0
;
private
long
lastTs
;
private
boolean
haveBOS
=
false
;
private
boolean
haveDecoder
=
false
;
/*
...
...
@@ -71,6 +72,9 @@ public class KateDec extends Element implements OggPayload
public
int
takeHeader
(
Packet
op
)
{
int
ret
=
ki
.
decodeHeader
(
kc
,
op
);
if
(
ret
>=
0
)
{
haveBOS
=
true
;
}
if
(
ret
>
0
)
{
k
.
decodeInit
(
ki
);
Debug
.
debug
(
"Kate decoder ready"
);
...
...
src/com/fluendo/plugin/TheoraDec.java
View file @
4313e0f9
...
...
@@ -37,6 +37,7 @@ public class TheoraDec extends Element implements OggPayload
private
long
lastTs
;
private
boolean
needKeyframe
;
private
boolean
haveBOS
=
false
;
private
boolean
haveDecoder
=
false
;
/*
...
...
@@ -52,7 +53,10 @@ public class TheoraDec extends Element implements OggPayload
byte
header
;
ret
=
ti
.
decodeHeader
(
tc
,
op
);
header
=
op
.
packet_base
[
op
.
packet
];
if
(
header
==
-
126
)
{
if
(
header
==
-
128
)
{
haveBOS
=
true
;
}
else
if
(
header
==
-
126
)
{
ts
.
decodeInit
(
ti
);
haveDecoder
=
true
;
}
...
...
@@ -98,12 +102,14 @@ public class TheoraDec extends Element implements OggPayload
{
long
res
;
if
(
gp
<
0
||
!
have
Decoder
)
if
(
gp
<
0
||
!
have
BOS
)
return
-
1
;
res
=
(
long
)
(
ts
.
granuleTime
(
gp
)
*
Clock
.
SECOND
);
long
iframe
=
gp
>>
ti
.
keyframe_granule_shift
;
long
pframe
=
gp
-(
iframe
<<
ti
.
keyframe_granule_shift
);
return
res
;
return
(
long
)((
iframe
+
pframe
)*
((
double
)
ti
.
fps_denominator
/
ti
.
fps_numerator
)
*
Clock
.
SECOND
);
}
private
Pad
srcPad
=
new
Pad
(
Pad
.
SRC
,
"src"
)
{
...
...
Write
Preview
Supports
Markdown
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