Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
V
vlc-2-2
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-2-2
Commits
2c65bd98
Commit
2c65bd98
authored
Dec 29, 1999
by
Stéphane Borel
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
* Ajout de quelques fonctions pour traiter les structures *_extension
dans le parser
parent
e229f269
Changes
2
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
177 additions
and
5 deletions
+177
-5
include/vpar_headers.h
include/vpar_headers.h
+9
-1
src/video_parser/vpar_headers.c
src/video_parser/vpar_headers.c
+168
-4
No files found.
include/vpar_headers.h
View file @
2c65bd98
...
...
@@ -55,6 +55,14 @@ typedef struct sequence_s
/* Parser context */
picture_t
*
p_forward
,
p_backward
;
/* Copyright extension */
boolean_t
b_copyright_flag
;
/* Whether the following
information is significant
or not. */
u8
i_copyright_identifier
;
boolean_t
b_original_or_copy
;
u64
i_copyright_number
;
}
sequence_t
;
/*****************************************************************************
...
...
@@ -70,7 +78,7 @@ typedef struct picture_parsing_s
boolean_t
b_frame_pred_frame_dct
,
b_q_scale_type
;
boolean_t
b_alternate_scan
,
b_progressive_frame
;
boolean_t
b_top_field_first
,
b_concealment_mv
;
boolean
-
t
b_repeat_first_field
;
int
i_lum_incr
,
i_chroma_incr
;
/* Used for second field management */
...
...
src/video_parser/vpar_headers.c
View file @
2c65bd98
...
...
@@ -357,10 +357,11 @@ static void PictureHeader( vpar_thread_t * p_vpar )
p_vpar
->
picture
.
b_q_scale_type
=
GetBits
(
&
p_vpar
->
bit_stream
,
1
);
p_vpar
->
picture
.
b_intra_vlc_format
=
GetBits
(
&
p_vpar
->
bit_stream
,
1
);
p_vpar
->
picture
.
b_alternate_scan
=
GetBits
(
&
p_vpar
->
bit_stream
,
1
);
/* repeat_first_field (ISO/IEC 13818-2 6.3.10 is cryptic and
* apparently the reference decoder doesn't use it, so trash it),
p_vpar
->
picture
.
b_repeat_first_field
=
GetBits
(
&
vpar
->
bit_stream
,
1
);
/* repeat_first_field (ISO/IEC 13818-2 6.3.10 is necessary to know
* the length of the picture_display_extension structure.
* chroma_420_type (obsolete) */
DumpBits
(
&
p_vpar
->
bit_stream
,
2
);
DumpBits
(
&
p_vpar
->
bit_stream
,
1
);
p_vpar
->
picture
.
b_progressive_frame
=
GetBits
(
&
p_vpar
->
bit_stream
,
1
);
/* composite_display_flag */
...
...
@@ -705,14 +706,177 @@ static void ExtensionAndUserData( vpar_thread_t * p_vpar )
}
}
/*****************************************************************************
* SequenceDisplayExtension : Parse the sequence_display_extension structure
* SequenceDisplayExtension : Parse the sequence_display_extension structure
*
*****************************************************************************/
static
void
SequenceDisplayExtension
(
vpar_thread_t
*
p_vpar
)
{
/* We don't care sequence_display_extension. */
DumpBits32
(
&
p_vpar
->
bit_stream
);
DumpBits
(
&
p_vpar
->
bit_stream
,
25
);
}
/*****************************************************************************
* QuantMatrixExtension : Load quantization matrices for luminance *
* and chrominance *
*****************************************************************************/
static
void
QuantMatrixExtension
(
vpar_thread_t
*
p_vpar
)
{
if
(
GetBits
(
&
p_vpar
->
bit_stream
,
1
)
)
{
/* Load intra_quantiser_matrix for luminance. */
LoadMatrix
(
p_vpar
,
&
p_vpar
->
sequence
.
intra_quant
);
}
else
{
/* Use the default matrix. */
LinkMatrix
(
&
p_vpar
->
sequence
.
intra_quant
,
pi_default_intra_quant
);
}
if
(
GetBits
(
&
p_vpar
->
bit_stream
,
1
)
)
{
/* Load non_intra_quantiser_matrix for luminance. */
LoadMatrix
(
p_vpar
,
&
p_vpar
->
sequence
.
non_intra_quant
);
}
else
{
/* Use the default matrix. */
LinkMatrix
(
&
p_vpar
->
sequence
.
nonintra_quant
,
pi_default_nonintra_quant
);
}
if
(
GetBits
(
&
p_vpar
->
bit_stream
,
1
)
)
{
/* Load intra_quantiser_matrix for chrominance. */
LoadMatrix
(
p_vpar
,
&
p_vpar
->
sequence
.
chroma_intra_quant
);
}
else
{
/* Link the chrominance intra matrix to the luminance one. */
LinkMatrix
(
&
p_vpar
->
sequence
.
chroma_intra_quant
,
&
p_vpar
->
sequence
.
intra_quant
);
}
if
(
GetBits
(
&
p_vpar
->
bit_stream
,
1
)
)
{
/* Load non_intra_quantiser_matrix for chrominance. */
LoadMatrix
(
p_vpar
,
&
p_vpar
->
sequence
.
chroma_nonintra_quant
);
}
else
{
/* Link the chrominance intra matrix to the luminance one. */
LinkMatrix
(
&
p_vpar
->
sequence
.
chroma_intra_quant
,
&
p_vpar
->
sequence
.
intra_quant
);
}
if
(
GetBits
(
&
p_vpar
->
bit_stream
,
1
)
)
{
/* Load non_intra_quantiser_matrix for chrominance. */
LoadMatrix
(
p_vpar
,
&
p_vpar
->
sequence
.
chroma_nonintra_quant
);
}
else
{
/* Link the chrominance nonintra matrix to the luminance one. */
LinkMatrix
(
&
p_vpar
->
sequence
.
chroma_nonintra_quant
,
&
p_vpar
->
sequence
.
nonintra_quant
);
}
}
/*****************************************************************************
* SequenceScalableExtension : Parse the sequence_scalable_extension *
* structure to handle scalable coding *
*****************************************************************************/
static
void
SequenceScalableExtension
(
vpar_thread_t
*
p_vpar
)
{
/* We don't care about anything scalable. */
switch
(
GetBits
(
&
p_vpar
->
bit_stream
,
2
)
)
/* The length of the structure depends on the value of the scalable_mode */
{
case
1
:
DumpBits32
(
&
p_vpar
->
bit_stream
);
DumpBits
(
&
p_vpar
->
bit_stream
,
21
);
break
;
case
2
:
DumpBits
(
&
p_vpar
->
bit_stream
,
12
);
break
;
default:
DumpBits
(
&
p_vpar
->
bit_stream
,
4
);
}
}
/*****************************************************************************
* PictureDisplayExtension : Parse the picture_display_extension structure *
*****************************************************************************/
static
void
PictureDisplayExtension
(
vpar_thread_t
*
p_vpar
)
{
/* Number of frame center offset */
int
nb
;
/* I am not sure it works but it should
(fewer tests than shown in 6.3.12) */
nb
=
p_vpar
->
sequence
.
b_progressive
?
p_vpar
->
sequence
.
b_progressive
+
p_vpar
->
picture
.
b_repeat_first_field
+
p_vpar
->
picture
.
b_top_field_first
:
(
(
p_vpar
->
picture
.
i_structure
+
1
)
/
2
)
+
p_vpar
->
picture
.
b_repeat_first_field
;
DumpBits
(
&
p_vpar
->
bit_stream
,
34
*
nb
);
}
/*****************************************************************************
* PictureSpatialScalableExtension *
*****************************************************************************/
static
void
PictureScalablePictureExtension
(
vpar_thread_t
*
p_vpar
)
{
/* That's scalable, so we trash it */
DumpBits32
(
&
p_vpar
->
bit_stream
);
DumpBits
(
&
p_vpar
->
bit_stream
,
14
);
}
/*****************************************************************************
* PictureTemporalScalableExtension *
*****************************************************************************/
static
void
PictureTemporalScalableExtension
(
vpar_thread_t
*
p_vpar
)
{
/* Scalable again, trashed again */
DumpBits
(
&
p_vpar
->
bit_stream
,
23
);
}
/*****************************************************************************
* CopyrightExtension : Keeps some legal informations *
*****************************************************************************/
static
void
CopytrightExtension
(
vpar_thread_t
*
p_vpar
)
{
u32
copyright_number_1
,
copyright_number_2
;
p_vpar
->
sequence
.
copyright_flag
=
GetBits
(
&
p_vpar
->
bit_stream
,
1
);
/* A flag that says whether the copyright information is significant */
p_vpar
->
sequence
.
copyright_identifier
=
GetBits
(
&
p_vpar
->
bit_stream
,
8
);
/* An identifier compliant with ISO/CEI JTC 1/SC 29 */
p_vpar
->
sequence
.
original_or_copy
=
GetBits
(
&
p_vpar
->
bit_stream
,
1
);
/* Reserved bits */
DumpBits
(
&
p_vpar
->
bit_stream
,
8
);
/* The copyright_number is split in three parts */
/* first part */
copyright_number_1
=
GetBits
(
&
p_vpar
->
bit_stream
,
20
);
DumpBits
(
&
p_vpar
->
bit_stream
,
1
);
/* second part */
copyright_number_2
=
GetBits
(
&
p_vpar
->
bit_stream
,
22
);
DumpBits
(
&
p_vpar
->
bit_stream
,
1
);
/* third part and sum */
p_vpar
->
sequence
.
copyright_number
=
(
copyright_number_1
<<
44
)
+
(
copyright_number_2
<<
22
)
+
(
GetBits
(
&
p_vpar
->
bit_stream
,
22
)
);
}
/*****************************************************************************
* LoadMatrix : Load a quantization matrix
*****************************************************************************/
...
...
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