Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
V
vlc-1.1
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Redmine
Redmine
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Metrics
Environments
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
videolan
vlc-1.1
Commits
aa9d7e09
Commit
aa9d7e09
authored
Aug 27, 2000
by
Christophe Massiot
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Correction d'un bug de synchro pour les images monotrames.
parent
9a43a27e
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
20 additions
and
148 deletions
+20
-148
src/video_parser/vpar_headers.c
src/video_parser/vpar_headers.c
+17
-28
src/video_parser/vpar_synchro.c
src/video_parser/vpar_synchro.c
+3
-120
No files found.
src/video_parser/vpar_headers.c
View file @
aa9d7e09
...
@@ -164,33 +164,20 @@ static void __inline__ ReferenceUpdate( vpar_thread_t * p_vpar,
...
@@ -164,33 +164,20 @@ static void __inline__ ReferenceUpdate( vpar_thread_t * p_vpar,
if
(
i_coding_type
!=
B_CODING_TYPE
)
if
(
i_coding_type
!=
B_CODING_TYPE
)
{
{
if
(
p_vpar
->
sequence
.
p_forward
!=
NULL
)
if
(
p_vpar
->
sequence
.
p_forward
!=
NULL
)
{
vout_UnlinkPicture
(
p_vpar
->
p_vout
,
p_vpar
->
sequence
.
p_forward
);
vout_UnlinkPicture
(
p_vpar
->
p_vout
,
p_vpar
->
sequence
.
p_forward
);
}
if
(
p_vpar
->
sequence
.
p_backward
!=
NULL
)
if
(
p_vpar
->
sequence
.
p_backward
!=
NULL
)
{
{
#ifdef POLUX_SYNCHRO
vout_DatePicture
(
p_vpar
->
p_vout
,
p_vpar
->
sequence
.
p_backward
,
vpar_SynchroDate
(
p_vpar
)
);
#endif
#ifdef SAM_SYNCHRO
vout_DatePicture
(
p_vpar
->
p_vout
,
p_vpar
->
sequence
.
p_backward
,
vout_DatePicture
(
p_vpar
->
p_vout
,
p_vpar
->
sequence
.
p_backward
,
vpar_SynchroDate
(
p_vpar
)
);
vpar_SynchroDate
(
p_vpar
)
);
#endif
#ifdef MEUUH_SYNCHRO
mtime_t
date
;
date
=
vpar_SynchroDate
(
p_vpar
);
vout_DatePicture
(
p_vpar
->
p_vout
,
p_vpar
->
sequence
.
p_backward
,
date
);
if
(
p_vpar
->
synchro
.
i_coding_type
==
I_CODING_TYPE
)
vpar_SynchroKludge
(
p_vpar
,
date
);
#endif
}
}
p_vpar
->
sequence
.
p_forward
=
p_vpar
->
sequence
.
p_backward
;
p_vpar
->
sequence
.
p_forward
=
p_vpar
->
sequence
.
p_backward
;
p_vpar
->
sequence
.
p_backward
=
p_newref
;
p_vpar
->
sequence
.
p_backward
=
p_newref
;
if
(
p_newref
!=
NULL
)
if
(
p_newref
!=
NULL
)
{
vout_LinkPicture
(
p_vpar
->
p_vout
,
p_newref
);
vout_LinkPicture
(
p_vpar
->
p_vout
,
p_newref
);
#ifdef MEUUH_SYNCHRO
}
p_vpar
->
synchro
.
i_coding_type
=
i_coding_type
;
#endif
}
}
else
if
(
p_newref
!=
NULL
)
else
if
(
p_newref
!=
NULL
)
{
{
...
@@ -210,10 +197,14 @@ static void __inline__ ReferenceReplace( vpar_thread_t * p_vpar,
...
@@ -210,10 +197,14 @@ static void __inline__ ReferenceReplace( vpar_thread_t * p_vpar,
if
(
i_coding_type
!=
B_CODING_TYPE
)
if
(
i_coding_type
!=
B_CODING_TYPE
)
{
{
if
(
p_vpar
->
sequence
.
p_backward
!=
NULL
)
if
(
p_vpar
->
sequence
.
p_backward
!=
NULL
)
{
vout_UnlinkPicture
(
p_vpar
->
p_vout
,
p_vpar
->
sequence
.
p_backward
);
vout_UnlinkPicture
(
p_vpar
->
p_vout
,
p_vpar
->
sequence
.
p_backward
);
}
p_vpar
->
sequence
.
p_backward
=
p_newref
;
p_vpar
->
sequence
.
p_backward
=
p_newref
;
if
(
p_newref
!=
NULL
)
if
(
p_newref
!=
NULL
)
{
vout_LinkPicture
(
p_vpar
->
p_vout
,
p_newref
);
vout_LinkPicture
(
p_vpar
->
p_vout
,
p_newref
);
}
}
}
}
}
...
@@ -613,7 +604,7 @@ static void PictureHeader( vpar_thread_t * p_vpar )
...
@@ -613,7 +604,7 @@ static void PictureHeader( vpar_thread_t * p_vpar )
if
(
p_vpar
->
picture
.
i_current_structure
)
if
(
p_vpar
->
picture
.
i_current_structure
)
{
{
/* Second field of a frame. We will decode it if, and only if we
/* Second field of a frame. We will decode it if, and only if we
* have decoded the first field. */
* have decoded the first field. */
b_parsable
=
(
p_vpar
->
picture
.
p_picture
!=
NULL
);
b_parsable
=
(
p_vpar
->
picture
.
p_picture
!=
NULL
);
}
}
else
else
...
@@ -623,21 +614,12 @@ static void PictureHeader( vpar_thread_t * p_vpar )
...
@@ -623,21 +614,12 @@ static void PictureHeader( vpar_thread_t * p_vpar )
p_vpar
->
picture
.
i_coding_type
,
i_structure
);
p_vpar
->
picture
.
i_coding_type
,
i_structure
);
}
}
}
}
#ifdef POLUX_SYNCHRO
else
if
(
!
p_vpar
->
picture
.
i_current_structure
)
{
vpar_SynchroTrash
(
p_vpar
,
p_vpar
->
picture
.
i_coding_type
,
i_structure
);
}
#endif
if
(
!
b_parsable
)
if
(
!
b_parsable
)
{
{
/* Update the reference pointers. */
/* Update the reference pointers. */
ReferenceUpdate
(
p_vpar
,
p_vpar
->
picture
.
i_coding_type
,
NULL
);
ReferenceUpdate
(
p_vpar
,
p_vpar
->
picture
.
i_coding_type
,
NULL
);
#ifndef POLUX_SYNCHRO
/* Warn Synchro we have trashed a picture. */
vpar_SynchroTrash
(
p_vpar
,
p_vpar
->
picture
.
i_coding_type
,
i_structure
);
#endif
/* Update context. */
/* Update context. */
if
(
i_structure
!=
FRAME_STRUCTURE
)
if
(
i_structure
!=
FRAME_STRUCTURE
)
{
{
...
@@ -648,9 +630,16 @@ static void PictureHeader( vpar_thread_t * p_vpar )
...
@@ -648,9 +630,16 @@ static void PictureHeader( vpar_thread_t * p_vpar )
}
}
else
else
{
{
/* The frame is complete. */
p_vpar
->
picture
.
i_current_structure
=
i_structure
;
p_vpar
->
picture
.
i_current_structure
=
i_structure
;
vpar_SynchroTrash
(
p_vpar
,
p_vpar
->
picture
.
i_coding_type
,
i_structure
);
}
}
}
}
else
{
/* Warn Synchro we have trashed a picture. */
vpar_SynchroTrash
(
p_vpar
,
p_vpar
->
picture
.
i_coding_type
,
i_structure
);
}
p_vpar
->
picture
.
p_picture
=
NULL
;
p_vpar
->
picture
.
p_picture
=
NULL
;
return
;
return
;
...
...
src/video_parser/vpar_synchro.c
View file @
aa9d7e09
...
@@ -387,7 +387,9 @@ mtime_t vpar_SynchroDate( vpar_thread_t * p_vpar )
...
@@ -387,7 +387,9 @@ mtime_t vpar_SynchroDate( vpar_thread_t * p_vpar )
return i_displaydate;
return i_displaydate;
#else
#else
static
s64
i_last_date
=
0
;
//printf("%d: %lld\n", p_vpar->picture.i_coding_type, p_vpar->synchro.i_last_pts - i_last_date);
//i_last_date = p_vpar->synchro.i_last_pts;
return
p_vpar
->
synchro
.
i_last_pts
;
return
p_vpar
->
synchro
.
i_last_pts
;
#endif
#endif
...
@@ -395,125 +397,6 @@ mtime_t vpar_SynchroDate( vpar_thread_t * p_vpar )
...
@@ -395,125 +397,6 @@ mtime_t vpar_SynchroDate( vpar_thread_t * p_vpar )
#endif
#endif
#ifdef MEUUH_SYNCHRO
/* synchro a deux balles backportee du decodeur de reference. NE MARCHE PAS
AVEC LES IMAGES MONOTRAMES */
boolean_t
vpar_SynchroChoose
(
vpar_thread_t
*
p_vpar
,
int
i_coding_type
,
int
i_structure
)
{
switch
(
i_coding_type
)
{
case
B_CODING_TYPE
:
if
((
p_vpar
->
synchro
.
kludge_level
<=
p_vpar
->
synchro
.
kludge_nbp
))
{
p_vpar
->
synchro
.
kludge_b
++
;
return
(
0
);
}
if
(
p_vpar
->
synchro
.
kludge_b
%
(
p_vpar
->
synchro
.
kludge_nbb
/
(
p_vpar
->
synchro
.
kludge_level
-
p_vpar
->
synchro
.
kludge_nbp
)))
{
p_vpar
->
synchro
.
kludge_b
++
;
return
(
0
);
}
p_vpar
->
synchro
.
kludge_b
++
;
return
(
1
);
case
P_CODING_TYPE
:
if
(
p_vpar
->
synchro
.
kludge_p
++
>=
p_vpar
->
synchro
.
kludge_level
)
{
return
(
0
);
}
return
(
1
);
default:
return
(
1
);
}
}
void
vpar_SynchroTrash
(
vpar_thread_t
*
p_vpar
,
int
i_coding_type
,
int
i_structure
)
{
if
(
DECODER_FIFO_START
(
p_vpar
->
fifo
)
->
b_has_pts
&&
i_coding_type
==
I_CODING_TYPE
)
{
p_vpar
->
synchro
.
kludge_nbframes
=
0
;
p_vpar
->
synchro
.
kludge_date
=
DECODER_FIFO_START
(
p_vpar
->
fifo
)
->
i_pts
;
}
else
p_vpar
->
synchro
.
kludge_nbframes
++
;
DECODER_FIFO_START
(
p_vpar
->
fifo
)
->
b_has_pts
=
0
;
}
void
vpar_SynchroDecode
(
vpar_thread_t
*
p_vpar
,
int
i_coding_type
,
int
i_structure
)
{
if
(
DECODER_FIFO_START
(
p_vpar
->
fifo
)
->
b_has_pts
&&
i_coding_type
==
I_CODING_TYPE
)
{
p_vpar
->
synchro
.
kludge_nbframes
=
0
;
p_vpar
->
synchro
.
kludge_date
=
DECODER_FIFO_START
(
p_vpar
->
fifo
)
->
i_pts
;
DECODER_FIFO_START
(
p_vpar
->
fifo
)
->
b_has_pts
=
0
;
}
else
p_vpar
->
synchro
.
kludge_nbframes
++
;
}
mtime_t
vpar_SynchroDate
(
vpar_thread_t
*
p_vpar
)
{
return
(
p_vpar
->
synchro
.
kludge_date
+
p_vpar
->
synchro
.
kludge_nbframes
*
1000000
/
(
p_vpar
->
sequence
.
i_frame_rate
)
*
1001
);
}
void
vpar_SynchroEnd
(
vpar_thread_t
*
p_vpar
)
{
}
void
vpar_SynchroKludge
(
vpar_thread_t
*
p_vpar
,
mtime_t
date
)
{
mtime_t
show_date
;
int
temp
=
p_vpar
->
synchro
.
kludge_level
;
p_vpar
->
synchro
.
kludge_nbp
=
p_vpar
->
synchro
.
kludge_p
?
p_vpar
->
synchro
.
kludge_p
:
5
;
p_vpar
->
synchro
.
kludge_nbb
=
p_vpar
->
synchro
.
kludge_b
?
p_vpar
->
synchro
.
kludge_b
:
6
;
show_date
=
date
-
mdate
();
p_vpar
->
synchro
.
kludge_p
=
0
;
p_vpar
->
synchro
.
kludge_b
=
0
;
if
(
show_date
<
(
SYNC_DELAY
-
SYNC_TOLERATE
)
&&
show_date
<=
p_vpar
->
synchro
.
kludge_prevdate
)
{
p_vpar
->
synchro
.
kludge_level
--
;
if
(
p_vpar
->
synchro
.
kludge_level
<
0
)
p_vpar
->
synchro
.
kludge_level
=
0
;
else
if
(
p_vpar
->
synchro
.
kludge_level
>
p_vpar
->
synchro
.
kludge_nbp
+
p_vpar
->
synchro
.
kludge_nbb
)
p_vpar
->
synchro
.
kludge_level
=
p_vpar
->
synchro
.
kludge_nbp
+
p_vpar
->
synchro
.
kludge_nbb
;
#ifdef DEBUG
if
(
temp
!=
p_vpar
->
synchro
.
kludge_level
)
intf_DbgMsg
(
"vdec debug: Level changed from %d to %d (%Ld)
\n
"
,
temp
,
p_vpar
->
synchro
.
kludge_level
,
show_date
);
#endif
}
else
if
(
show_date
>
(
SYNC_DELAY
+
SYNC_TOLERATE
)
&&
show_date
>=
p_vpar
->
synchro
.
kludge_prevdate
)
{
p_vpar
->
synchro
.
kludge_level
++
;
if
(
p_vpar
->
synchro
.
kludge_level
>
p_vpar
->
synchro
.
kludge_nbp
+
p_vpar
->
synchro
.
kludge_nbb
)
p_vpar
->
synchro
.
kludge_level
=
p_vpar
->
synchro
.
kludge_nbp
+
p_vpar
->
synchro
.
kludge_nbb
;
#ifdef DEBUG
if
(
temp
!=
p_vpar
->
synchro
.
kludge_level
)
intf_DbgMsg
(
"vdec debug: Level changed from %d to %d (%Ld)
\n
"
,
temp
,
p_vpar
->
synchro
.
kludge_level
,
show_date
);
#endif
}
p_vpar
->
synchro
.
kludge_prevdate
=
show_date
;
if
((
p_vpar
->
synchro
.
kludge_level
-
p_vpar
->
synchro
.
kludge_nbp
)
>
p_vpar
->
synchro
.
kludge_nbb
)
p_vpar
->
synchro
.
kludge_level
=
p_vpar
->
synchro
.
kludge_nbb
+
p_vpar
->
synchro
.
kludge_nbp
;
}
#endif
#ifdef POLUX_SYNCHRO
#ifdef POLUX_SYNCHRO
...
...
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