Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
V
vlc-gpu
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-gpu
Commits
eed30019
Commit
eed30019
authored
Jan 04, 2004
by
Rocky Bernstein
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Was putting 1 byte of garbage for each packet.
parent
a9bd5d7e
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
163 additions
and
158 deletions
+163
-158
modules/codec/ogt/cvd.c
modules/codec/ogt/cvd.c
+4
-153
modules/codec/ogt/cvd.h
modules/codec/ogt/cvd.h
+2
-2
modules/codec/ogt/cvd_parse.c
modules/codec/ogt/cvd_parse.c
+155
-1
modules/codec/ogt/subtitle.h
modules/codec/ogt/subtitle.h
+2
-2
No files found.
modules/codec/ogt/cvd.c
View file @
eed30019
...
...
@@ -2,7 +2,7 @@
* cvd.c : CVD Subtitle decoder thread
*****************************************************************************
* Copyright (C) 2003 VideoLAN
* $Id: cvd.c,v 1.
6 2004/01/03 12:54:56
rocky Exp $
* $Id: cvd.c,v 1.
7 2004/01/04 04:56:21
rocky Exp $
*
* Authors: Rocky Bernstein
* based on code from:
...
...
@@ -243,164 +243,15 @@ Reassemble( decoder_t *p_dec, block_t **pp_block )
}
/* FIXME - remove append_data and use chainappend */
VCDSubAppendData
(
p_dec
,
p_buffer
,
p_block
->
i_buffer
-
SPU_HEADER_LEN
);
VCDSubAppendData
(
p_dec
,
p_buffer
+
SPU_HEADER_LEN
,
p_block
->
i_buffer
-
SPU_HEADER_LEN
);
block_ChainAppend
(
&
p_sys
->
p_block
,
p_block
);
p_sys
->
i_spu
+=
p_block
->
i_buffer
-
SPU_HEADER_LEN
;
if
(
p_sys
->
subtitle_data_pos
==
p_sys
->
i_spu_size
)
{
/* last packet in subtitle block. */
uint8_t
*
p
=
p_sys
->
subtitle_data
+
p_sys
->
metadata_offset
+
1
;
uint8_t
*
p_end
=
p
+
p_sys
->
metadata_length
;
dbg_print
(
(
DECODE_DBG_PACKET
),
"subtitle packet complete, size=%d"
,
p_sys
->
i_spu
);
p_sys
->
state
=
SUBTITLE_BLOCK_COMPLETE
;
p_sys
->
i_image
++
;
for
(
;
p
<
p_end
;
p
+=
4
)
{
switch
(
p
[
0
]
)
{
case
0x04
:
/* Display duration in 1/90000ths of a second */
p_sys
->
i_duration
=
(
p
[
1
]
<<
16
)
+
(
p
[
2
]
<<
8
)
+
p
[
3
];
dbg_print
(
DECODE_DBG_PACKET
,
"subtitle display duration %u"
,
p_sys
->
i_duration
);
break
;
case
0x0c
:
/* Unknown */
dbg_print
(
DECODE_DBG_PACKET
,
"subtitle command unknown 0x%0x 0x%0x 0x%0x 0x%0x
\n
"
,
p
[
0
],
p
[
1
],
p
[
2
],
p
[
3
]);
break
;
case
0x17
:
/* Position */
p_sys
->
i_x_start
=
((
p
[
1
]
&
0x0f
)
<<
6
)
+
(
p
[
2
]
>>
2
);
p_sys
->
i_y_start
=
((
p
[
2
]
&
0x03
)
<<
8
)
+
p
[
3
];
dbg_print
(
DECODE_DBG_PACKET
,
"start position (%d,%d): %.2x %.2x %.2x"
,
p_sys
->
i_x_start
,
p_sys
->
i_y_start
,
p
[
1
],
p
[
2
],
p
[
3
]
);
break
;
case
0x1f
:
/* Coordinates of the image bottom right */
{
int
lastx
=
((
p
[
1
]
&
0x0f
)
<<
6
)
+
(
p
[
2
]
>>
2
);
int
lasty
=
((
p
[
2
]
&
0x03
)
<<
8
)
+
p
[
3
];
p_sys
->
i_width
=
lastx
-
p_sys
->
i_x_start
+
1
;
p_sys
->
i_height
=
lasty
-
p_sys
->
i_y_start
+
1
;
dbg_print
(
DECODE_DBG_PACKET
,
"end position: (%d,%d): %.2x %.2x %.2x, w x h: %dx%d"
,
lastx
,
lasty
,
p
[
1
],
p
[
2
],
p
[
3
],
p_sys
->
i_width
,
p_sys
->
i_height
);
break
;
}
case
0x24
:
case
0x25
:
case
0x26
:
case
0x27
:
{
uint8_t
v
=
p
[
0
]
-
0x24
;
/* Primary Palette */
dbg_print
(
DECODE_DBG_PACKET
,
"primary palette %d (y,u,v): (0x%0x,0x%0x,0x%0x)"
,
v
,
p
[
1
],
p
[
2
],
p
[
3
]);
p_sys
->
p_palette
[
v
].
s
.
y
=
p
[
1
];
p_sys
->
p_palette
[
v
].
s
.
u
=
p
[
2
];
p_sys
->
p_palette
[
v
].
s
.
v
=
p
[
3
];
break
;
}
case
0x2c
:
case
0x2d
:
case
0x2e
:
case
0x2f
:
{
uint8_t
v
=
p
[
0
]
-
0x2c
;
dbg_print
(
DECODE_DBG_PACKET
,
"highlight palette %d (y,u,v): (0x%0x,0x%0x,0x%0x)"
,
v
,
p
[
1
],
p
[
2
],
p
[
3
]);
/* Highlight Palette */
p_sys
->
p_palette_highlight
[
v
].
s
.
y
=
p
[
1
];
p_sys
->
p_palette_highlight
[
v
].
s
.
u
=
p
[
2
];
p_sys
->
p_palette_highlight
[
v
].
s
.
v
=
p
[
3
];
break
;
}
case
0x37
:
/* transparency for primary palette */
p_sys
->
p_palette
[
0
].
s
.
t
=
p
[
3
]
&
0x0f
;
p_sys
->
p_palette
[
1
].
s
.
t
=
p
[
3
]
>>
4
;
p_sys
->
p_palette
[
2
].
s
.
t
=
p
[
2
]
&
0x0f
;
p_sys
->
p_palette
[
3
].
s
.
t
=
p
[
2
]
>>
4
;
dbg_print
(
DECODE_DBG_PACKET
,
"transparancy for primary palette 0..3: "
"0x%0x 0x%0x 0x%0x 0x%0x"
,
p_sys
->
p_palette
[
0
].
s
.
t
,
p_sys
->
p_palette
[
1
].
s
.
t
,
p_sys
->
p_palette
[
2
].
s
.
t
,
p_sys
->
p_palette
[
3
].
s
.
t
);
break
;
case
0x3f
:
/* transparency for highlight palette */
p_sys
->
p_palette_highlight
[
0
].
s
.
t
=
p
[
2
]
&
0x0f
;
p_sys
->
p_palette_highlight
[
1
].
s
.
t
=
p
[
2
]
>>
4
;
p_sys
->
p_palette_highlight
[
2
].
s
.
t
=
p
[
1
]
&
0x0f
;
p_sys
->
p_palette_highlight
[
3
].
s
.
t
=
p
[
1
]
>>
4
;
dbg_print
(
DECODE_DBG_PACKET
,
"transparancy for primary palette 0..3: "
"0x%0x 0x%0x 0x%0x 0x%0x"
,
p_sys
->
p_palette_highlight
[
0
].
s
.
t
,
p_sys
->
p_palette_highlight
[
1
].
s
.
t
,
p_sys
->
p_palette_highlight
[
2
].
s
.
t
,
p_sys
->
p_palette_highlight
[
3
].
s
.
t
);
break
;
case
0x47
:
/* offset to first field data, we correct to make it relative
to comp_image_offset (usually 4) */
p_sys
->
first_field_offset
=
(
p
[
2
]
<<
8
)
+
p
[
3
]
-
p_sys
->
comp_image_offset
;
dbg_print
(
DECODE_DBG_PACKET
,
"first_field_offset %d"
,
p_sys
->
first_field_offset
);
break
;
case
0x4f
:
/* offset to second field data, we correct to make it relative to
comp_image_offset (usually 4) */
p_sys
->
second_field_offset
=
(
p
[
2
]
<<
8
)
+
p
[
3
]
-
p_sys
->
comp_image_offset
;
dbg_print
(
DECODE_DBG_PACKET
,
"second_field_offset %d"
,
p_sys
->
second_field_offset
);
break
;
default:
msg_Warn
(
p_dec
,
"unknown sequence in control header "
"0x%0x 0x%0x 0x%0x 0x%0x"
,
p
[
0
],
p
[
1
],
p
[
2
],
p
[
3
]);
p_sys
->
subtitle_data_pos
=
0
;
}
}
E_
(
ParseMetaInfo
)(
p_dec
);
return
p_sys
->
p_block
;
}
else
{
/* Not last block in subtitle, so wait for another. */
...
...
modules/codec/ogt/cvd.h
View file @
eed30019
...
...
@@ -2,7 +2,7 @@
* cvd.h : CVD subtitles decoder thread interface
*****************************************************************************
* Copyright (C) 2003 VideoLAN
* $Id: cvd.h,v 1.
1 2003/12/28 04:51:52
rocky Exp $
* $Id: cvd.h,v 1.
2 2004/01/04 04:56:21
rocky Exp $
*
* Author: Rocky Bernstein
*
...
...
@@ -27,4 +27,4 @@
*****************************************************************************/
void
E_
(
ParseHeader
)(
decoder_t
*
,
uint8_t
*
,
block_t
*
);
void
E_
(
ParsePacket
)(
decoder_t
*
);
void
E_
(
ParseMetaInfo
)(
decoder_t
*
p_dec
);
modules/codec/ogt/cvd_parse.c
View file @
eed30019
...
...
@@ -2,7 +2,7 @@
* parse.c: Philips OGT (SVCD subtitle) packet parser
*****************************************************************************
* Copyright (C) 2003, 2004 VideoLAN
* $Id: cvd_parse.c,v 1.
5 2004/01/03 12:54:56
rocky Exp $
* $Id: cvd_parse.c,v 1.
6 2004/01/04 04:56:21
rocky Exp $
*
* Authors: Rocky Bernstein
* based on code from:
...
...
@@ -108,6 +108,160 @@ void E_(ParseHeader)( decoder_t *p_dec, uint8_t *p_buffer, block_t *p_block )
}
void
E_
(
ParseMetaInfo
)(
decoder_t
*
p_dec
)
{
/* last packet in subtitle block. */
decoder_sys_t
*
p_sys
=
p_dec
->
p_sys
;
uint8_t
*
p
=
p_sys
->
subtitle_data
+
p_sys
->
metadata_offset
;
uint8_t
*
p_end
=
p
+
p_sys
->
metadata_length
;
dbg_print
(
(
DECODE_DBG_PACKET
),
"subtitle packet complete, size=%d"
,
p_sys
->
i_spu
);
p_sys
->
state
=
SUBTITLE_BLOCK_COMPLETE
;
p_sys
->
i_image
++
;
for
(
;
p
<
p_end
;
p
+=
4
)
{
switch
(
p
[
0
]
)
{
case
0x04
:
/* Display duration in 1/90000ths of a second */
p_sys
->
i_duration
=
(
p
[
1
]
<<
16
)
+
(
p
[
2
]
<<
8
)
+
p
[
3
];
dbg_print
(
DECODE_DBG_PACKET
,
"subtitle display duration %u"
,
p_sys
->
i_duration
);
break
;
case
0x0c
:
/* Unknown */
dbg_print
(
DECODE_DBG_PACKET
,
"subtitle command unknown 0x%0x 0x%0x 0x%0x 0x%0x
\n
"
,
p
[
0
],
p
[
1
],
p
[
2
],
p
[
3
]);
break
;
case
0x17
:
/* Position */
p_sys
->
i_x_start
=
((
p
[
1
]
&
0x0f
)
<<
6
)
+
(
p
[
2
]
>>
2
);
p_sys
->
i_y_start
=
((
p
[
2
]
&
0x03
)
<<
8
)
+
p
[
3
];
dbg_print
(
DECODE_DBG_PACKET
,
"start position (%d,%d): %.2x %.2x %.2x"
,
p_sys
->
i_x_start
,
p_sys
->
i_y_start
,
p
[
1
],
p
[
2
],
p
[
3
]
);
break
;
case
0x1f
:
/* Coordinates of the image bottom right */
{
int
lastx
=
((
p
[
1
]
&
0x0f
)
<<
6
)
+
(
p
[
2
]
>>
2
);
int
lasty
=
((
p
[
2
]
&
0x03
)
<<
8
)
+
p
[
3
];
p_sys
->
i_width
=
lastx
-
p_sys
->
i_x_start
+
1
;
p_sys
->
i_height
=
lasty
-
p_sys
->
i_y_start
+
1
;
dbg_print
(
DECODE_DBG_PACKET
,
"end position: (%d,%d): %.2x %.2x %.2x, w x h: %dx%d"
,
lastx
,
lasty
,
p
[
1
],
p
[
2
],
p
[
3
],
p_sys
->
i_width
,
p_sys
->
i_height
);
break
;
}
case
0x24
:
case
0x25
:
case
0x26
:
case
0x27
:
{
uint8_t
v
=
p
[
0
]
-
0x24
;
/* Primary Palette */
dbg_print
(
DECODE_DBG_PACKET
,
"primary palette %d (y,u,v): (0x%0x,0x%0x,0x%0x)"
,
v
,
p
[
1
],
p
[
2
],
p
[
3
]);
p_sys
->
p_palette
[
v
].
s
.
y
=
p
[
1
];
p_sys
->
p_palette
[
v
].
s
.
u
=
p
[
2
];
p_sys
->
p_palette
[
v
].
s
.
v
=
p
[
3
];
break
;
}
case
0x2c
:
case
0x2d
:
case
0x2e
:
case
0x2f
:
{
uint8_t
v
=
p
[
0
]
-
0x2c
;
dbg_print
(
DECODE_DBG_PACKET
,
"highlight palette %d (y,u,v): (0x%0x,0x%0x,0x%0x)"
,
v
,
p
[
1
],
p
[
2
],
p
[
3
]);
/* Highlight Palette */
p_sys
->
p_palette_highlight
[
v
].
s
.
y
=
p
[
1
];
p_sys
->
p_palette_highlight
[
v
].
s
.
u
=
p
[
2
];
p_sys
->
p_palette_highlight
[
v
].
s
.
v
=
p
[
3
];
break
;
}
case
0x37
:
/* transparency for primary palette */
p_sys
->
p_palette
[
0
].
s
.
t
=
p
[
3
]
&
0x0f
;
p_sys
->
p_palette
[
1
].
s
.
t
=
p
[
3
]
>>
4
;
p_sys
->
p_palette
[
2
].
s
.
t
=
p
[
2
]
&
0x0f
;
p_sys
->
p_palette
[
3
].
s
.
t
=
p
[
2
]
>>
4
;
dbg_print
(
DECODE_DBG_PACKET
,
"transparancy for primary palette 0..3: "
"0x%0x 0x%0x 0x%0x 0x%0x"
,
p_sys
->
p_palette
[
0
].
s
.
t
,
p_sys
->
p_palette
[
1
].
s
.
t
,
p_sys
->
p_palette
[
2
].
s
.
t
,
p_sys
->
p_palette
[
3
].
s
.
t
);
break
;
case
0x3f
:
/* transparency for highlight palette */
p_sys
->
p_palette_highlight
[
0
].
s
.
t
=
p
[
2
]
&
0x0f
;
p_sys
->
p_palette_highlight
[
1
].
s
.
t
=
p
[
2
]
>>
4
;
p_sys
->
p_palette_highlight
[
2
].
s
.
t
=
p
[
1
]
&
0x0f
;
p_sys
->
p_palette_highlight
[
3
].
s
.
t
=
p
[
1
]
>>
4
;
dbg_print
(
DECODE_DBG_PACKET
,
"transparancy for primary palette 0..3: "
"0x%0x 0x%0x 0x%0x 0x%0x"
,
p_sys
->
p_palette_highlight
[
0
].
s
.
t
,
p_sys
->
p_palette_highlight
[
1
].
s
.
t
,
p_sys
->
p_palette_highlight
[
2
].
s
.
t
,
p_sys
->
p_palette_highlight
[
3
].
s
.
t
);
break
;
case
0x47
:
/* offset to first field data, we correct to make it relative
to comp_image_offset (usually 4) */
p_sys
->
first_field_offset
=
(
p
[
2
]
<<
8
)
+
p
[
3
]
-
p_sys
->
comp_image_offset
;
dbg_print
(
DECODE_DBG_PACKET
,
"first_field_offset %d"
,
p_sys
->
first_field_offset
);
break
;
case
0x4f
:
/* offset to second field data, we correct to make it relative to
comp_image_offset (usually 4) */
p_sys
->
second_field_offset
=
(
p
[
2
]
<<
8
)
+
p
[
3
]
-
p_sys
->
comp_image_offset
;
dbg_print
(
DECODE_DBG_PACKET
,
"second_field_offset %d"
,
p_sys
->
second_field_offset
);
break
;
default:
msg_Warn
(
p_dec
,
"unknown sequence in control header "
"0x%0x 0x%0x 0x%0x 0x%0x"
,
p
[
0
],
p
[
1
],
p
[
2
],
p
[
3
]);
p_sys
->
subtitle_data_pos
=
0
;
}
}
}
/*****************************************************************************
* ParsePacket: parse an SPU packet and send it to the video output
...
...
modules/codec/ogt/subtitle.h
View file @
eed30019
...
...
@@ -2,7 +2,7 @@
* subtitle.h : Common SVCD and CVD subtitles header
*****************************************************************************
* Copyright (C) 2003,2004 VideoLAN
* $Id: subtitle.h,v 1.
3 2004/01/03 12:54:56
rocky Exp $
* $Id: subtitle.h,v 1.
4 2004/01/04 04:56:21
rocky Exp $
*
* Author: Rocky Bernstein
* based on code from:
...
...
@@ -76,8 +76,8 @@ typedef union {
uint8_t
plane
[
4
];
struct
{
uint8_t
y
;
uint8_t
u
;
uint8_t
v
;
uint8_t
u
;
uint8_t
t
;
}
s
;
}
ogt_yuvt_t
;
...
...
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