Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
V
vlc
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
Commits
a2f91640
Commit
a2f91640
authored
Apr 23, 2002
by
Sam Hocevar
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
* ./plugins/chroma/i420_yuy2.h: optimized the 420 planar-to-packed chroma
transformations. They're now PIC-friendly as well.
parent
30a5f368
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
104 additions
and
87 deletions
+104
-87
ChangeLog
ChangeLog
+29
-0
plugins/chroma/i420_yuy2.c
plugins/chroma/i420_yuy2.c
+26
-74
plugins/chroma/i420_yuy2.h
plugins/chroma/i420_yuy2.h
+49
-13
No files found.
ChangeLog
View file @
a2f91640
...
...
@@ -4,6 +4,35 @@
HEAD
*
./
plugins
/
chroma
/
i420_yuy2
.
h
:
optimized
the
420
planar
-
to
-
packed
chroma
transformations
.
They
're now PIC-friendly as well.
* ./plugins/macosx/intf_open.c: added Open disc and network panels.
* ./plugins/macosx/intf_controller.c: some changes to the control layout.
* ./src/interface/main.c: i_warning_level is set to 0 to avoid unwanted
verbose messages.
* ./po/en_GB.po: British translation.
* ./src/interface/main.c, ./src/misc/configuration.c: fixed the warning_level
handling: "-v" and "--warning" are now working as they should and they also
are cumulative (using -vv --warning=3 you end up with i_warning_level=5).
* ./src/misc/configuration.c: support for short options. -V, -A, -I
are back, and we also have -4 and -6 for IPv4/IPv6.
* ./src/misc/configuration.c: added config_GetFloatVariable() and
config_PutFloatVariable() to the config module.
* ./src/video_output/video_output.c: added a --zoom <float> config option.
* ./plugins/idct/idct_sparse.c: added a call to RestoreCPUState() in
InitIDCT() so that the FPU is still available after a call to InitIDCT().
* ./plugins/text/logger.c: deactivated stream buffering when logging to a
file.
* ./po/*: re-ran make update-po, fixed a few translations.
* ./po/fr.po: completed the french translation.
* ./plugins/gtk/gtk.glade, ./plugins/gtk/gnome.glade: synchronized a few
strings between the Gtk+ and GNOME modules to avoid duplicate translations.
* ./po/de.po: updated german translation. Many thanks to Thomas Graf.
* ./doc/vlc-howto.sgml: URL & mailing-lists corrections.
* ./plugins/gtk/gtk_preferences.c: the last category from the config options
wasn'
t
displayed
.
*
po
/
nl
.
po
:
updated
Netherlands
translation
of
interface
.
*
po
/
fr
.
po
:
completed
french
translations
.
*
ALL
:
internationalized
all
configuration
strings
.
*
./
src
/
interface
/
main
.
c
:
we
now
set
LC_CTYPE
to
get
the
right
charset
.
*
./
src
/
misc
/
configuration
.
c
:
lots
of
simplifications
in
the
code
.
...
...
plugins/chroma/i420_yuy2.c
View file @
a2f91640
...
...
@@ -2,7 +2,7 @@
* i420_yuy2.c : YUV to YUV conversion module for vlc
*****************************************************************************
* Copyright (C) 2000, 2001 VideoLAN
* $Id: i420_yuy2.c,v 1.
5 2002/04/19 13:56:1
0 sam Exp $
* $Id: i420_yuy2.c,v 1.
6 2002/04/23 13:47:3
0 sam Exp $
*
* Authors: Samuel Hocevar <sam@zoy.org>
*
...
...
@@ -10,7 +10,7 @@
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
...
...
@@ -150,8 +150,8 @@ static int chroma_Init( vout_thread_t *p_vout )
default:
return
-
1
;
}
return
0
;
return
0
;
}
/*****************************************************************************
...
...
@@ -190,24 +190,12 @@ static void I420_YUY2( vout_thread_t *p_vout, picture_t *p_source,
for
(
i_x
=
p_vout
->
render
.
i_width
/
8
;
i_x
--
;
)
{
#if defined (MODULE_NAME_IS_chroma_i420_yuy2)
C_YUV420_YUYV
(
p_line1
,
p_line2
,
p_y1
,
p_y2
,
p_u
,
p_v
);
C_YUV420_YUYV
(
p_line1
,
p_line2
,
p_y1
,
p_y2
,
p_u
,
p_v
);
C_YUV420_YUYV
(
p_line1
,
p_line2
,
p_y1
,
p_y2
,
p_u
,
p_v
);
C_YUV420_YUYV
(
p_line1
,
p_line2
,
p_y1
,
p_y2
,
p_u
,
p_v
);
C_YUV420_YUYV
(
);
C_YUV420_YUYV
(
);
C_YUV420_YUYV
(
);
C_YUV420_YUYV
(
);
#else
__asm__
(
".align 8"
MMX_YUV420_YUYV
:
:
"r"
(
p_line1
),
"r"
(
p_line2
),
"r"
(
p_y1
),
"r"
(
p_y2
),
"r"
(
p_u
),
"r"
(
p_v
)
);
p_line1
+=
8
;
p_line2
+=
8
;
p_y1
+=
4
;
p_y2
+=
4
;
p_u
+=
2
;
p_v
+=
2
;
__asm__
(
".align 8"
MMX_YUV420_YUYV
:
:
"r"
(
p_line1
),
"r"
(
p_line2
),
"r"
(
p_y1
),
"r"
(
p_y2
),
"r"
(
p_u
),
"r"
(
p_v
)
);
p_line1
+=
8
;
p_line2
+=
8
;
p_y1
+=
4
;
p_y2
+=
4
;
p_u
+=
2
;
p_v
+=
2
;
MMX_CALL
(
MMX_YUV420_YUYV
);
#endif
}
}
...
...
@@ -237,24 +225,12 @@ static void I420_YVYU( vout_thread_t *p_vout, picture_t *p_source,
for
(
i_x
=
p_vout
->
render
.
i_width
/
8
;
i_x
--
;
)
{
#if defined (MODULE_NAME_IS_chroma_i420_yuy2)
C_YUV420_YVYU
(
p_line1
,
p_line2
,
p_y1
,
p_y2
,
p_u
,
p_v
);
C_YUV420_YVYU
(
p_line1
,
p_line2
,
p_y1
,
p_y2
,
p_u
,
p_v
);
C_YUV420_YVYU
(
p_line1
,
p_line2
,
p_y1
,
p_y2
,
p_u
,
p_v
);
C_YUV420_YVYU
(
p_line1
,
p_line2
,
p_y1
,
p_y2
,
p_u
,
p_v
);
C_YUV420_YVYU
(
);
C_YUV420_YVYU
(
);
C_YUV420_YVYU
(
);
C_YUV420_YVYU
(
);
#else
__asm__
(
".align 8"
MMX_YUV420_YVYU
:
:
"r"
(
p_line1
),
"r"
(
p_line2
),
"r"
(
p_y1
),
"r"
(
p_y2
),
"r"
(
p_u
),
"r"
(
p_v
)
);
p_line1
+=
8
;
p_line2
+=
8
;
p_y1
+=
4
;
p_y2
+=
4
;
p_u
+=
2
;
p_v
+=
2
;
__asm__
(
".align 8"
MMX_YUV420_YVYU
:
:
"r"
(
p_line1
),
"r"
(
p_line2
),
"r"
(
p_y1
),
"r"
(
p_y2
),
"r"
(
p_u
),
"r"
(
p_v
)
);
p_line1
+=
8
;
p_line2
+=
8
;
p_y1
+=
4
;
p_y2
+=
4
;
p_u
+=
2
;
p_v
+=
2
;
MMX_CALL
(
MMX_YUV420_YVYU
);
#endif
}
}
...
...
@@ -284,24 +260,12 @@ static void I420_UYVY( vout_thread_t *p_vout, picture_t *p_source,
for
(
i_x
=
p_vout
->
render
.
i_width
/
8
;
i_x
--
;
)
{
#if defined (MODULE_NAME_IS_chroma_i420_yuy2)
C_YUV420_UYVY
(
p_line1
,
p_line2
,
p_y1
,
p_y2
,
p_u
,
p_v
);
C_YUV420_UYVY
(
p_line1
,
p_line2
,
p_y1
,
p_y2
,
p_u
,
p_v
);
C_YUV420_UYVY
(
p_line1
,
p_line2
,
p_y1
,
p_y2
,
p_u
,
p_v
);
C_YUV420_UYVY
(
p_line1
,
p_line2
,
p_y1
,
p_y2
,
p_u
,
p_v
);
C_YUV420_UYVY
(
);
C_YUV420_UYVY
(
);
C_YUV420_UYVY
(
);
C_YUV420_UYVY
(
);
#else
__asm__
(
".align 8"
MMX_YUV420_UYVY
:
:
"r"
(
p_line1
),
"r"
(
p_line2
),
"r"
(
p_y1
),
"r"
(
p_y2
),
"r"
(
p_u
),
"r"
(
p_v
)
);
p_line1
+=
8
;
p_line2
+=
8
;
p_y1
+=
4
;
p_y2
+=
4
;
p_u
+=
2
;
p_v
+=
2
;
__asm__
(
".align 8"
MMX_YUV420_UYVY
:
:
"r"
(
p_line1
),
"r"
(
p_line2
),
"r"
(
p_y1
),
"r"
(
p_y2
),
"r"
(
p_u
),
"r"
(
p_v
)
);
p_line1
+=
8
;
p_line2
+=
8
;
p_y1
+=
4
;
p_y2
+=
4
;
p_u
+=
2
;
p_v
+=
2
;
MMX_CALL
(
MMX_YUV420_UYVY
);
#endif
}
}
...
...
@@ -344,24 +308,12 @@ static void I420_cyuv( vout_thread_t *p_vout, picture_t *p_source,
for
(
i_x
=
p_vout
->
render
.
i_width
/
8
;
i_x
--
;
)
{
#if defined (MODULE_NAME_IS_chroma_i420_yuy2)
C_YUV420_UYVY
(
p_line1
,
p_line2
,
p_y1
,
p_y2
,
p_u
,
p_v
);
C_YUV420_UYVY
(
p_line1
,
p_line2
,
p_y1
,
p_y2
,
p_u
,
p_v
);
C_YUV420_UYVY
(
p_line1
,
p_line2
,
p_y1
,
p_y2
,
p_u
,
p_v
);
C_YUV420_UYVY
(
p_line1
,
p_line2
,
p_y1
,
p_y2
,
p_u
,
p_v
);
C_YUV420_UYVY
(
);
C_YUV420_UYVY
(
);
C_YUV420_UYVY
(
);
C_YUV420_UYVY
(
);
#else
__asm__
(
".align 8"
MMX_YUV420_UYVY
:
:
"r"
(
p_line1
),
"r"
(
p_line2
),
"r"
(
p_y1
),
"r"
(
p_y2
),
"r"
(
p_u
),
"r"
(
p_v
)
);
p_line1
+=
8
;
p_line2
+=
8
;
p_y1
+=
4
;
p_y2
+=
4
;
p_u
+=
2
;
p_v
+=
2
;
__asm__
(
".align 8"
MMX_YUV420_UYVY
:
:
"r"
(
p_line1
),
"r"
(
p_line2
),
"r"
(
p_y1
),
"r"
(
p_y2
),
"r"
(
p_u
),
"r"
(
p_v
)
);
p_line1
+=
8
;
p_line2
+=
8
;
p_y1
+=
4
;
p_y2
+=
4
;
p_u
+=
2
;
p_v
+=
2
;
MMX_CALL
(
MMX_YUV420_UYVY
);
#endif
}
}
...
...
@@ -391,8 +343,8 @@ static void I420_Y211( vout_thread_t *p_vout, picture_t *p_source,
for
(
i_x
=
p_vout
->
render
.
i_width
/
8
;
i_x
--
;
)
{
C_YUV420_Y211
(
p_line1
,
p_line2
,
p_y1
,
p_y2
,
p_u
,
p_v
);
C_YUV420_Y211
(
p_line1
,
p_line2
,
p_y1
,
p_y2
,
p_u
,
p_v
);
C_YUV420_Y211
(
);
C_YUV420_Y211
(
);
}
}
}
...
...
plugins/chroma/i420_yuy2.h
View file @
a2f91640
...
...
@@ -2,7 +2,7 @@
* i420_yuy2.h : YUV to YUV conversion module for vlc
*****************************************************************************
* Copyright (C) 2000, 2001 VideoLAN
* $Id: i420_yuy2.h,v 1.
1 2002/01/04 14:01:34
sam Exp $
* $Id: i420_yuy2.h,v 1.
2 2002/04/23 13:47:30
sam Exp $
*
* Authors: Samuel Hocevar <sam@zoy.org>
*
...
...
@@ -28,10 +28,46 @@
UNUSED_LONGLONG
(
woo_00ffw
)
=
0x00ff00ff00ff00ff
;
UNUSED_LONGLONG
(
woo_80w
)
=
0x0000000080808080
;
#define MMX_CALL(foo) \
__asm__ __volatile__( \
MMX_LOAD \
".align 8 \n\t" \
foo \
MMX_INC \
".align 8 \n\t" \
foo \
MMX_INC \
MMX_SAVE \
: "=c" (p_line1), "=d" (p_line2), "=D" (p_y1), "=S" (p_y2) \
: "c" (p_line1), "d" (p_line2), "D" (p_y1), "S" (p_y2), \
"m" (p_u), "m" (p_v) \
: "eax" );
#define MMX_LOAD " \n\
pushl %%ebx \n\
movl %8,%%eax \n\
movl %9,%%ebx \n\
"
#define MMX_SAVE " \n\
movl %%eax,%8 \n\
movl %%ebx,%9 \n\
popl %%ebx \n\
"
#define MMX_INC " \n\
addl $8, %0 \n\
addl $8, %1 \n\
addl $4, %2 \n\
addl $4, %3 \n\
addl $2, %%eax \n\
addl $2, %%ebx \n\
"
#define MMX_YUV420_YUYV " \n\
movq (%2), %%mm0 # Load 8 Y y7 y6 y5 y4 y3 y2 y1 y0 \n\
movd
(%4
), %%mm1 # Load 4 Cb 00 00 00 00 u3 u2 u1 u0 \n\
movd
(%5
), %%mm2 # Load 4 Cr 00 00 00 00 v3 v2 v1 v0 \n\
movd
(%%eax
), %%mm1 # Load 4 Cb 00 00 00 00 u3 u2 u1 u0 \n\
movd
(%%ebx
), %%mm2 # Load 4 Cr 00 00 00 00 v3 v2 v1 v0 \n\
punpcklbw %%mm2, %%mm1 # v3 u3 v2 u2 v1 u1 v0 u0 \n\
movq %%mm0, %%mm2 # y7 y6 y5 y4 y3 y2 y1 y0 \n\
punpcklbw %%mm1, %%mm2 # v1 y3 u1 y2 v0 y1 u0 y0 \n\
...
...
@@ -48,8 +84,8 @@ movq %%mm0, 8(%1) # Store high YUYV \n\
#define MMX_YUV420_YVYU " \n\
movq (%2), %%mm0 # Load 8 Y y7 y6 y5 y4 y3 y2 y1 y0 \n\
movd
(%4
), %%mm2 # Load 4 Cb 00 00 00 00 u3 u2 u1 u0 \n\
movd
(%5
), %%mm1 # Load 4 Cr 00 00 00 00 v3 v2 v1 v0 \n\
movd
(%%eax
), %%mm2 # Load 4 Cb 00 00 00 00 u3 u2 u1 u0 \n\
movd
(%%ebx
), %%mm1 # Load 4 Cr 00 00 00 00 v3 v2 v1 v0 \n\
punpcklbw %%mm2, %%mm1 # u3 v3 u2 v2 u1 v1 u0 v0 \n\
movq %%mm0, %%mm2 # y7 y6 y5 y4 y3 y2 y1 y0 \n\
punpcklbw %%mm1, %%mm2 # u1 y3 v1 y2 u0 y1 v0 y0 \n\
...
...
@@ -67,8 +103,8 @@ movq %%mm0, 8(%1) # Store high YUYV \n\
#define MMX_YUV420_UYVY " \n\
movq (%2), %%mm0 # Load 8 Y y7 y6 y5 y4 y3 y2 y1 y0 \n\
movq (%3), %%mm3 # Load 8 Y Y7 Y6 Y5 Y4 Y3 Y2 Y1 Y0 \n\
movd
(%4
), %%mm2 # Load 4 Cb 00 00 00 00 u3 u2 u1 u0 \n\
movd
(%5
), %%mm1 # Load 4 Cr 00 00 00 00 v3 v2 v1 v0 \n\
movd
(%%eax
), %%mm2 # Load 4 Cb 00 00 00 00 u3 u2 u1 u0 \n\
movd
(%%ebx
), %%mm1 # Load 4 Cr 00 00 00 00 v3 v2 v1 v0 \n\
punpcklbw %%mm2, %%mm1 # u3 v3 u2 v2 u1 v1 u0 v0 \n\
movq %%mm1, %%mm2 # u3 v3 u2 v2 u1 v1 u0 v0 \n\
punpcklbw %%mm0, %%mm2 # y3 v1 y2 u1 y1 v0 y0 u0 \n\
...
...
@@ -87,8 +123,8 @@ movq %%mm1, 8(%1) # Store high UYVY \n\
#define MMX_YUV420_Y211 " \n\
movq (%2), %%mm0 # Load 8 Y y7 y6 y5 y4 y3 y2 y1 y0 \n\
movq (%3), %%mm1 # Load 8 Y Y7 Y6 Y5 Y4 Y3 Y2 Y1 Y0 \n\
movd
(%4
), %%mm2 # Load 4 Cb 00 00 00 00 u3 u2 u1 u0 \n\
movd
(%5
), %%mm3 # Load 4 Cr 00 00 00 00 v3 v2 v1 v0 \n\
movd
(%%eax
), %%mm2 # Load 4 Cb 00 00 00 00 u3 u2 u1 u0 \n\
movd
(%%ebx
), %%mm3 # Load 4 Cr 00 00 00 00 v3 v2 v1 v0 \n\
pand woo_00ffw, %%mm0 # get Y even 00 Y6 00 Y4 00 Y2 00 Y0 \n\
packuswb %%mm0, %%mm0 # pack Y y6 y4 y2 y0 y6 y4 y2 y0 \n\
pand woo_00ffw, %%mm2 # get U even 00 u6 00 u4 00 u2 00 u0 \n\
...
...
@@ -107,25 +143,25 @@ movq %%mm1, (%1) # Store YUYV \n\
#else
#define C_YUV420_YUYV(
p_line1, p_line2, p_y1, p_y2, p_u, p_v )
\
#define C_YUV420_YUYV(
)
\
*(p_line1)++ = *(p_y1)++; *(p_line2)++ = *(p_y2)++; \
*(p_line1)++ = *(p_line2)++ = *(p_u)++; \
*(p_line1)++ = *(p_y1)++; *(p_line2)++ = *(p_y2)++; \
*(p_line1)++ = *(p_line2)++ = *(p_v)++; \
#define C_YUV420_YVYU(
p_line1, p_line2, p_y1, p_y2, p_u, p_v )
\
#define C_YUV420_YVYU(
)
\
*(p_line1)++ = *(p_y1)++; *(p_line2)++ = *(p_y2)++; \
*(p_line1)++ = *(p_line2)++ = *(p_v)++; \
*(p_line1)++ = *(p_y1)++; *(p_line2)++ = *(p_y2)++; \
*(p_line1)++ = *(p_line2)++ = *(p_u)++; \
#define C_YUV420_UYVY(
p_line1, p_line2, p_y1, p_y2, p_u, p_v )
\
#define C_YUV420_UYVY(
)
\
*(p_line1)++ = *(p_line2)++ = *(p_u)++; \
*(p_line1)++ = *(p_y1)++; *(p_line2)++ = *(p_y2)++; \
*(p_line1)++ = *(p_line2)++ = *(p_v)++; \
*(p_line1)++ = *(p_y1)++; *(p_line2)++ = *(p_y2)++; \
#define C_YUV420_Y211(
p_line1, p_line2, p_y1, p_y2, p_u, p_v )
\
#define C_YUV420_Y211(
)
\
*(p_line1)++ = *(p_y1); ((u16*)p_y1)++; \
*(p_line2)++ = *(p_y2); ((u16*)p_y2)++; \
*(p_line1)++ = *(p_line2)++ = *(p_u) - 0x80; ((u16*)p_u)++; \
...
...
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