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
bc326075
Commit
bc326075
authored
Dec 27, 2003
by
Rocky Bernstein
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Scale bitmaps for 4:3 output
parent
a1c4ba2f
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
58 additions
and
29 deletions
+58
-29
modules/codec/ogt/ogt.h
modules/codec/ogt/ogt.h
+3
-2
modules/codec/ogt/parse.c
modules/codec/ogt/parse.c
+51
-23
modules/codec/ogt/render.c
modules/codec/ogt/render.c
+4
-4
No files found.
modules/codec/ogt/ogt.h
View file @
bc326075
...
...
@@ -2,7 +2,7 @@
* ogt.h : Overlay Graphics Text (SVCD subtitles) decoder thread interface
*****************************************************************************
* Copyright (C) 2003 VideoLAN
* $Id: ogt.h,v 1.
4 2003/12/26 02:47
:59 rocky Exp $
* $Id: ogt.h,v 1.
5 2003/12/27 01:49
:59 rocky Exp $
*
* Author: Rocky Bernstein
* based on code from:
...
...
@@ -28,7 +28,8 @@
#define DECODE_DBG_CALL 2
/* all calls */
#define DECODE_DBG_PACKET 4
/* packet assembly info */
#define DECODE_DBG_IMAGE 8
/* image bitmaps */
#define DECODE_DBG_INFO 16
#define DECODE_DBG_TRANSFORM 16
/* bitmap transformations */
#define DECODE_DBG_INFO 32
#define DECODE_DEBUG 1
#if DECODE_DEBUG
...
...
modules/codec/ogt/parse.c
View file @
bc326075
...
...
@@ -2,7 +2,7 @@
* parse.c: Philips OGT (SVCD subtitle) packet parser
*****************************************************************************
* Copyright (C) 2003 VideoLAN
* $Id: parse.c,v 1.
1 2003/12/26 01:39:23
rocky Exp $
* $Id: parse.c,v 1.
2 2003/12/27 01:49:59
rocky Exp $
*
* Authors: Rocky Bernstein
* based on code from:
...
...
@@ -240,43 +240,73 @@ ExtractField(uint8_t *p, unsigned int i_remaining)
return
(
(
*
p
>>
2
*
(
i_remaining
-
1
)
)
&
0x3
);
}
#ifdef FINISHED
/* Scales down (reduces size) of p_dest in the x direction as
determined through aspect ratio x_scale by y_scale. Scaling
is done in place.
i_width, is updated to new ratio.
is done in place.
p_spu->i_width, is updated to new width
The aspect ratio is assumed to be between 1
and 2
.
The aspect ratio is assumed to be between 1
/2 and 1
.
*/
static
void
ScaleX
(
uint8_t
*
p_dest
,
/*in out */
u_int16_t
*
i_width
,
u_int16_t
i_height
,
unsigned
int
scale_x
,
unsigned
int
scale_y
)
ScaleX
(
decoder_t
*
p_dec
,
subpicture_t
*
p_spu
,
unsigned
int
i_scale_x
,
unsigned
int
i_
scale_y
)
{
int
i_row
,
i_col
;
uint8_t
*
p1
=
p_dest
;
uint8_t
*
p2
=
p_dest
+
PIXEL_SIZE
;
decoder_sys_t
*
p_sys
=
p_dec
->
p_sys
;
uint8_t
*
p_src1
=
p_spu
->
p_sys
->
p_data
;
uint8_t
*
p_src2
=
p_src1
+
PIXEL_SIZE
;
uint8_t
*
p_dst
=
p_src1
;
unsigned
int
i_new_width
=
(
p_spu
->
i_width
*
i_scale_x
)
/
i_scale_y
;
unsigned
int
used
=
0
;
/* Number of bytes used up in p_src1. */
dbg_print
(
(
DECODE_DBG_CALL
|
DECODE_DBG_TRANSFORM
)
,
"Old width: %d, new width: %d"
,
p_spu
->
i_width
,
i_new_width
);
unsigned
int
used
=
0
;
/* Number of bytes used up in p1. */
for
(
i_row
=
0
;
i_row
<=
p_spu
->
i_height
-
1
;
i_row
++
)
{
for
(
i_row
=
0
;
i_row
<
i_height
-
1
;
i_row
++
)
{
for
(
i_col
=
0
;
i_col
<=
(
*
i_width
)
-
2
;
i_col
++
)
{
if
(
used
!=
0
)
{
/* Discard the remaining piece of the colum of the previous line*/
used
=
0
;
p_src1
=
p_src2
;
p_src2
+=
PIXEL_SIZE
;
}
for
(
i_col
=
0
;
i_col
<=
p_spu
->
i_width
-
2
;
i_col
++
)
{
unsigned
int
i
;
unsigned
int
w1
=
scale_x
-
used
;
unsigned
int
w2
=
scale_y
-
w1
;
unsigned
int
w1
=
i_scale_x
-
used
;
unsigned
int
w2
=
i_scale_y
-
w1
;
used
=
w2
;
for
(
i
=
0
;
i
<
PIXEL_SIZE
;
i
++
)
{
*
p
1
=
(
(
*
p1
*
w1
)
+
(
*
p2
*
w2
)
)
/
scale_y
;
p
1
++
;
p2
++
;
*
p
_dst
=
(
(
*
p_src1
*
w1
)
+
(
*
p_src2
*
w2
)
)
/
i_
scale_y
;
p
_src1
++
;
p_src2
++
;
p_dst
++
;
}
if
(
scale_x
==
used
)
{
p1
=
p2
;
p2
+=
PIXEL_SIZE
;
if
(
i_scale_x
==
used
)
{
/* End of last pixel was end of p_src2. */
p_src1
=
p_src2
;
p_src2
+=
PIXEL_SIZE
;
i_col
++
;
used
=
0
;
}
}
}
/* *i_width = ((*i_width) * scale_y) / scale_x; */
p_spu
->
i_width
=
i_new_width
;
if
(
p_sys
&&
p_sys
->
i_debug
&
DECODE_DBG_TRANSFORM
)
{
ogt_yuvt_t
*
p_source
=
(
ogt_yuvt_t
*
)
p_spu
->
p_sys
->
p_data
;
for
(
i_row
=
0
;
i_row
<
p_spu
->
i_height
-
1
;
i_row
++
)
{
for
(
i_col
=
0
;
i_col
<
p_spu
->
i_width
-
1
;
i_col
++
)
{
printf
(
"%1x"
,
p_source
->
t
);
p_source
++
;
}
printf
(
"
\n
"
);
}
}
}
#endif
/*****************************************************************************
* ParseImage: parse the image part of the subtitle
...
...
@@ -395,14 +425,12 @@ ParseImage( decoder_t *p_dec, subpicture_t * p_spu )
}
}
#ifdef FINISHED
/* The video is automatically scaled. However subtitle bitmaps
assume a 1:1 aspect ratio. So we need to scale to compensate for
or undo the effects of video output scaling.
*/
/* FIXME do the right scaling depending on vout. It may not be 4:3 */
ScaleX
(
p_dest
,
&
(
p_sys
->
i_width
),
i_height
,
3
,
4
);
#endif
ScaleX
(
p_dec
,
p_spu
,
3
,
4
);
return
VLC_SUCCESS
;
}
...
...
modules/codec/ogt/render.c
View file @
bc326075
...
...
@@ -2,7 +2,7 @@
* render.c : Philips OGT (SVCD Subtitle) renderer
*****************************************************************************
* Copyright (C) 2003 VideoLAN
* $Id: render.c,v 1.
1 2003/12/26 01:39:35
rocky Exp $
* $Id: render.c,v 1.
2 2003/12/27 01:49:59
rocky Exp $
*
* Author: Rocky Bernstein
* based on code from:
...
...
@@ -55,9 +55,9 @@ void E_(RenderSPU)( vout_thread_t *p_vout, picture_t *p_pic,
const
subpicture_t
*
p_spu
)
{
#ifndef FINISHED
printf
(
"+++%x
\n
"
,
p_vout
->
output
.
i_chroma
);
#endif
/*
printf("+++%x\n", p_vout->output.i_chroma);
*/
switch
(
p_vout
->
output
.
i_chroma
)
{
...
...
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