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
25095c7a
Commit
25095c7a
authored
Oct 08, 2001
by
Christophe Massiot
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Beuheuheuheuhuehueuhuehuehu forgot to add new QuickTime files :*-(((
parent
28c71156
Changes
4
Show whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
578 additions
and
0 deletions
+578
-0
plugins/macosx/intf_macosx_qt.c
plugins/macosx/intf_macosx_qt.c
+159
-0
plugins/macosx/macosx_qt.c
plugins/macosx/macosx_qt.c
+72
-0
plugins/macosx/macosx_qt_common.h
plugins/macosx/macosx_qt_common.h
+79
-0
plugins/macosx/vout_macosx_qt.c
plugins/macosx/vout_macosx_qt.c
+268
-0
No files found.
plugins/macosx/intf_macosx_qt.c
0 → 100644
View file @
25095c7a
/*****************************************************************************
* intf_macosx.c: MacOS X interface plugin
*****************************************************************************
* Copyright (C) 2001 VideoLAN
*
* Authors: Colin Delacroix <colin@zoy.org>
*
* This program is free software; you can redistribute it and/or modify
* 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
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA.
*****************************************************************************/
#include "modules_inner.h"
/*****************************************************************************
* Preamble
*****************************************************************************/
#include "defs.h"
#include <stdlib.h>
/* malloc(), free() */
#include <sys/param.h>
/* for MAXPATHLEN */
#include "config.h"
#include "common.h"
#include "threads.h"
#include "mtime.h"
#include "tests.h"
#include "interface.h"
#include "intf_msg.h"
#include "intf_playlist.h"
#include "main.h"
#include "modules.h"
#include "modules_export.h"
#include "macosx_qt_common.h"
/*****************************************************************************
* Local prototypes.
*****************************************************************************/
static
int
intf_Probe
(
probedata_t
*
p_data
);
static
int
intf_Open
(
intf_thread_t
*
p_intf
);
static
void
intf_Close
(
intf_thread_t
*
p_intf
);
static
void
intf_Run
(
intf_thread_t
*
p_intf
);
/* OS specific */
#define kMainLoopFrequency (kEventDurationSecond) //45 for good measure
static
pascal
OSStatus
FS_suspend_resume_handler
(
EventHandlerCallRef
ref
,
EventRef
event
,
void
*
dummy
)
;
static
pascal
void
APP_timer_handler
(
EventLoopTimerRef
timer
,
void
*
dummy
)
;
/*****************************************************************************
* Functions exported as capabilities. They are declared as static so that
* we don't pollute the namespace too much.
*****************************************************************************/
void
_M
(
intf_getfunctions
)(
function_list_t
*
p_function_list
)
{
p_function_list
->
pf_probe
=
intf_Probe
;
p_function_list
->
functions
.
intf
.
pf_open
=
intf_Open
;
p_function_list
->
functions
.
intf
.
pf_close
=
intf_Close
;
p_function_list
->
functions
.
intf
.
pf_run
=
intf_Run
;
}
/*****************************************************************************
* intf_Probe: probe the interface and return a score
*****************************************************************************
* This function checks the interface can be run and returns a score to the
* plugin manager so that it can select the best plugin.
*****************************************************************************/
static
int
intf_Probe
(
probedata_t
*
p_data
)
{
if
(
TestMethod
(
INTF_METHOD_VAR
,
"macosx_qt"
)
)
{
return
(
999
);
}
/* Under MacOS X, this plugin always works */
return
(
90
);
}
/*****************************************************************************
* intf_Open: initialize interface
*****************************************************************************/
static
int
intf_Open
(
intf_thread_t
*
p_intf
)
{
p_intf
->
p_sys
=
malloc
(
sizeof
(
intf_sys_t
)
);
if
(
p_intf
->
p_sys
==
NULL
)
{
return
(
1
);
};
return
(
0
);
}
/*****************************************************************************
* intf_Close: destroy interface
*****************************************************************************/
static
void
intf_Close
(
intf_thread_t
*
p_intf
)
{
/* Destroy structure */
free
(
p_intf
->
p_sys
);
}
/*****************************************************************************
* intf_Run: main loop
*****************************************************************************/
static
void
intf_Run
(
intf_thread_t
*
p_intf
)
{
static
EventTypeSpec
suspendResumeEvent
[
2
]
=
{{
kEventClassApplication
,
kEventAppActivated
},
{
kEventClassApplication
,
kEventAppDeactivated
}}
;
BeginFullScreen
(
&
p_intf
->
p_sys
->
before_fullscreen
,
nil
,
0
,
0
,
&
p_intf
->
p_sys
->
p_window
,
0
,
fullScreenAllowEvents
)
;
InstallStandardEventHandler
(
GetApplicationEventTarget
())
;
InstallApplicationEventHandler
(
NewEventHandlerUPP
(
FS_suspend_resume_handler
),
2
,
suspendResumeEvent
,
&
p_intf
->
p_sys
->
p_window
,
NULL
)
;
InstallEventLoopTimer
(
GetMainEventLoop
(),
0
,
kMainLoopFrequency
,
NewEventLoopTimerUPP
(
APP_timer_handler
),
NULL
,
&
p_intf
->
p_sys
->
r_timer
)
;
ShowWindow
(
p_intf
->
p_sys
->
p_window
);
p_intf
->
p_sys
->
b_active
=
1
;
RunApplicationEventLoop
()
;
p_intf
->
p_sys
->
b_active
=
0
;
EndFullScreen
(
p_intf
->
p_sys
->
before_fullscreen
,
nil
)
;
}
static
pascal
void
APP_timer_handler
(
EventLoopTimerRef
timer
,
void
*
dummy
)
{
p_main
->
p_intf
->
pf_manage
(
p_main
->
p_intf
)
;
if
(
p_main
->
p_intf
->
b_die
)
QuitApplicationEventLoop
()
;
}
static
pascal
OSStatus
FS_suspend_resume_handler
(
EventHandlerCallRef
ref
,
EventRef
event
,
void
*
dummy
)
{
switch
(
GetEventKind
(
event
))
{
case
kEventAppActivated
:
ShowWindow
(
p_main
->
p_intf
->
p_sys
->
p_window
)
;
SetPortWindowPort
(
p_main
->
p_intf
->
p_sys
->
p_window
)
;
intf_WarnMsg
(
1
,
"Application is on foreground"
)
;
break
;
case
kEventAppDeactivated
:
HideWindow
(
p_main
->
p_intf
->
p_sys
->
p_window
)
;
intf_WarnMsg
(
1
,
"Application sent to background"
)
;
break
;
}
return
noErr
;
}
plugins/macosx/macosx_qt.c
0 → 100644
View file @
25095c7a
/*****************************************************************************
* macosx.c : MacOS X plugin for vlc
*****************************************************************************
* Copyright (C) 2001 VideoLAN
* $Id: macosx_qt.c,v 1.1 2001/10/08 23:10:28 massiot Exp $
*
* Authors: Colin Delacroix <colin@zoy.org>
* Eugenio Jarosiewicz <ej0@cise.ufl.edu>
*
* This program is free software; you can redistribute it and/or modify
* 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
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA.
*****************************************************************************/
#include "modules_inner.h"
/*****************************************************************************
* Preamble
*****************************************************************************/
#include "defs.h"
#include <stdlib.h>
/* malloc(), free() */
#include "config.h"
#include "common.h"
/* boolean_t, byte_t */
#include "threads.h"
#include "mtime.h"
#include "modules.h"
/*****************************************************************************
* Capabilities defined in the other files.
*****************************************************************************/
void
_M
(
aout_getfunctions
)(
function_list_t
*
p_function_list
);
void
_M
(
vout_getfunctions
)(
function_list_t
*
p_function_list
);
void
_M
(
intf_getfunctions
)(
function_list_t
*
p_function_list
);
/*****************************************************************************
* Build configuration tree.
*****************************************************************************/
MODULE_CONFIG_START
ADD_WINDOW
(
"Configuration for MacOS X QuickTime module"
)
ADD_COMMENT
(
"Ha, ha -- nothing to configure yet"
)
MODULE_CONFIG_STOP
MODULE_INIT_START
p_module
->
i_capabilities
=
MODULE_CAPABILITY_NULL
|
MODULE_CAPABILITY_VOUT
|
MODULE_CAPABILITY_AOUT
|
MODULE_CAPABILITY_INTF
;
p_module
->
psz_longname
=
"MacOS X QuickTime output"
;
MODULE_INIT_STOP
MODULE_ACTIVATE_START
_M
(
vout_getfunctions
)(
&
p_module
->
p_functions
->
vout
);
_M
(
aout_getfunctions
)(
&
p_module
->
p_functions
->
aout
);
_M
(
intf_getfunctions
)(
&
p_module
->
p_functions
->
intf
);
MODULE_ACTIVATE_STOP
MODULE_DEACTIVATE_START
MODULE_DEACTIVATE_STOP
plugins/macosx/macosx_qt_common.h
0 → 100644
View file @
25095c7a
/*****************************************************************************
* macosx.c : MacOS X plugin for vlc
*****************************************************************************
* Copyright (C) 2001 VideoLAN
* $Id: macosx_qt_common.h,v 1.1 2001/10/08 23:10:28 massiot Exp $
*
* Authors: Colin Delacroix <colin@zoy.org>
*
* This program is free software; you can redistribute it and/or modify
* 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
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA.
*****************************************************************************/
/*****************************************************************************
* Constants & more
*****************************************************************************/
#ifndef __CARBONPREFIX__
#define __CARBONPREFIX__
// Needed for carbonization
#define TARGET_API_MAC_CARBON 1
// For the pascal to C or C to pascal string conversions in carbon
#define OLDP2C 1
#endif
#include <Carbon/Carbon.h>
#include <QuickTime/QuickTime.h>
#include <CoreServices/CoreServices.h>
#include <QuickTime/QuickTime.h>
#include <ApplicationServices/ApplicationServices.h>
/*****************************************************************************
* Type declarations that unfortunately need to be known to both
* ...
* Kind of a hack due to the fact that on Mac OS, there is little difference
* between the interface and the video output, and hence little separation
* between those elements.
*****************************************************************************/
extern
main_t
*
p_main
;
/*****************************************************************************
* vout_sys_t: MacOS X video output method descriptor
*****************************************************************************
* This structure is part of the video output thread descriptor.
* It describes the MacOS X specific properties of an output thread.
*****************************************************************************/
typedef
struct
vout_sys_s
{
ImageDescriptionHandle
h_img_descr
;
ImageSequence
i_seq
;
unsigned
int
i_img_size
;
unsigned
char
*
p_img
;
}
vout_sys_t
;
/*****************************************************************************
* intf_sys_t: description and status of the interface
*****************************************************************************/
typedef
struct
intf_sys_s
{
Ptr
before_fullscreen
;
WindowRef
p_window
;
EventLoopTimerRef
r_timer
;
unsigned
int
b_active
;
}
intf_sys_t
;
plugins/macosx/vout_macosx_qt.c
0 → 100644
View file @
25095c7a
/*****************************************************************************
* vout_macosx.c: MacOS X video output plugin
*****************************************************************************
* Copyright (C) 2001 VideoLAN
*
* Authors: Colin Delacroix <colin@zoy.org>
*
* This program is free software; you can redistribute it and/or modify
* 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
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA.
*****************************************************************************/
#include "modules_inner.h"
/*****************************************************************************
* Preamble
*****************************************************************************/
#include "defs.h"
#include <errno.h>
/* ENOMEM */
#include <stdlib.h>
/* free() */
#include <string.h>
/* strerror() */
#include "config.h"
#include "common.h"
#include "threads.h"
#include "mtime.h"
#include "tests.h"
#include "interface.h"
#include "intf_msg.h"
#include "video.h"
#include "video_output.h"
#include "modules.h"
#include "main.h"
#include "macosx_qt_common.h"
/*****************************************************************************
* Local prototypes
*****************************************************************************/
static
int
vout_Probe
(
probedata_t
*
p_data
);
static
int
vout_Create
(
struct
vout_thread_s
*
);
static
int
vout_Init
(
struct
vout_thread_s
*
);
static
void
vout_End
(
struct
vout_thread_s
*
);
static
void
vout_Destroy
(
struct
vout_thread_s
*
);
static
int
vout_Manage
(
struct
vout_thread_s
*
);
void
vout_OSX_Display
(
struct
vout_thread_s
*
);
/* OS specific */
static
int
vout_OSX_create_sequence
(
vout_thread_t
*
p_vout
)
;
/*****************************************************************************
* Functions exported as capabilities. They are declared as static so that
* we don't pollute the namespace too much.
*****************************************************************************/
void
_M
(
vout_getfunctions
)(
function_list_t
*
p_function_list
)
{
p_function_list
->
pf_probe
=
vout_Probe
;
p_function_list
->
functions
.
vout
.
pf_create
=
vout_Create
;
p_function_list
->
functions
.
vout
.
pf_init
=
vout_Init
;
p_function_list
->
functions
.
vout
.
pf_end
=
vout_End
;
p_function_list
->
functions
.
vout
.
pf_destroy
=
vout_Destroy
;
p_function_list
->
functions
.
vout
.
pf_manage
=
vout_Manage
;
p_function_list
->
functions
.
vout
.
pf_display
=
vout_OSX_Display
;
p_function_list
->
functions
.
vout
.
pf_setpalette
=
NULL
;
}
/*****************************************************************************
* intf_Probe: return a score
*****************************************************************************/
static
int
vout_Probe
(
probedata_t
*
p_data
)
{
if
(
TestMethod
(
VOUT_METHOD_VAR
,
"macosx_qt"
)
)
{
return
(
999
);
}
return
(
90
);
}
/*****************************************************************************
* vout_Create: allocates MacOS X video thread output method
*****************************************************************************
* This function allocates and initializes a MacOS X vout method.
*****************************************************************************/
static
int
vout_Create
(
vout_thread_t
*
p_vout
)
{
p_vout
->
p_sys
=
malloc
(
sizeof
(
vout_sys_t
)
);
if
(
p_vout
->
p_sys
==
NULL
)
{
intf_ErrMsg
(
"error: %s"
,
strerror
(
ENOMEM
)
);
return
(
1
);
}
EnterMovies
()
;
return
(
0
);
}
/*****************************************************************************
* MakeWindow: open and set-up a Mac OS main window
*****************************************************************************/
static
int
vout_OSX_create_sequence
(
vout_thread_t
*
p_vout
)
{
ImageDescriptionPtr
descr_ptr
;
OSErr
qterror
;
p_vout
->
p_sys
->
h_img_descr
=
(
ImageDescriptionHandle
)
NewHandleClear
(
sizeof
(
ImageDescription
))
;
p_vout
->
p_sys
->
i_img_size
=
p_vout
->
i_width
*
p_vout
->
i_height
*
1
.
5
;
//before: 2
if
(
!
(
p_vout
->
p_sys
->
p_img
=
malloc
(
p_vout
->
p_sys
->
i_img_size
)))
{
intf_ErrMsg
(
"couldn't allocate image:"
)
;
return
1
;
}
HLock
((
Handle
)
p_vout
->
p_sys
->
h_img_descr
)
;
descr_ptr
=
*
p_vout
->
p_sys
->
h_img_descr
;
descr_ptr
->
idSize
=
sizeof
(
ImageDescription
)
;
descr_ptr
->
cType
=
'
y420
'
;
//before: yuv2
descr_ptr
->
resvd1
=
0
;
//Reserved
descr_ptr
->
resvd2
=
0
;
//Reserved
descr_ptr
->
dataRefIndex
=
0
;
//Reserved
descr_ptr
->
version
=
1
;
//
descr_ptr
->
revisionLevel
=
0
;
descr_ptr
->
vendor
=
'
appl
'
;
//How do we get a vendor id??
descr_ptr
->
width
=
p_vout
->
i_width
;
descr_ptr
->
height
=
p_vout
->
i_height
;
descr_ptr
->
hRes
=
Long2Fix
(
72
)
;
descr_ptr
->
vRes
=
Long2Fix
(
72
)
;
descr_ptr
->
spatialQuality
=
codecLosslessQuality
;
descr_ptr
->
dataSize
=
p_vout
->
p_sys
->
i_img_size
;
descr_ptr
->
frameCount
=
1
;
//memcpy(descr_ptr->name, "\pComponent Video\0") ;
descr_ptr
->
depth
=
12
;
//before: 24
descr_ptr
->
clutID
=
-
1
;
//We don't need a color table
HUnlock
((
Handle
)
p_vout
->
p_sys
->
h_img_descr
)
;
SetPortWindowPort
(
p_main
->
p_intf
->
p_sys
->
p_window
)
;
qterror
=
DecompressSequenceBeginS
(
&
p_vout
->
p_sys
->
i_seq
,
p_vout
->
p_sys
->
h_img_descr
,
(
void
*
)
p_vout
->
p_sys
->
p_img
,
p_vout
->
p_sys
->
i_img_size
,
GetWindowPort
(
p_main
->
p_intf
->
p_sys
->
p_window
),
NULL
,
//device to display (is set implicit via the qdPort)
NULL
,
//src-rect
NULL
,
//matrix
0
,
//just do plain copying
NULL
,
//no mask region
codecFlagUseScreenBuffer
,
codecLosslessQuality
,
(
DecompressorComponent
)
bestSpeedCodec
)
;
intf_WarnMsg
(
1
,
"DecompressSequenceBeginS: %d
\n
"
,
qterror
)
;
if
(
qterror
)
{
return
(
1
)
;
}
p_vout
->
b_need_render
=
0
;
p_vout
->
i_bytes_per_line
=
p_vout
->
i_width
;
return
(
0
);
}
/*****************************************************************************
* vout_Init: initialize video thread output method
*****************************************************************************/
static
int
vout_Init
(
vout_thread_t
*
p_vout
)
{
if
(
vout_OSX_create_sequence
(
p_vout
)
)
{
intf_ErrMsg
(
"vout error: can't create quicktime view"
);
free
(
p_vout
->
p_sys
);
return
(
1
);
}
return
(
0
);
}
/*****************************************************************************
* vout_End: terminate video thread output method
*****************************************************************************/
static
void
vout_End
(
vout_thread_t
*
p_vout
)
{
CDSequenceEnd
(
p_vout
->
p_sys
->
i_seq
)
;
}
/*****************************************************************************
* vout_Destroy: destroy video thread output method
*****************************************************************************/
static
void
vout_Destroy
(
vout_thread_t
*
p_vout
)
{
free
(
p_vout
->
p_sys
);
}
/*****************************************************************************
* vout_Manage: handle events
*****************************************************************************
* This function should be called regularly by video output thread. It manages
* console events. It returns a non null value on error.
*****************************************************************************/
static
int
vout_Manage
(
vout_thread_t
*
p_vout
)
{
return
(
0
);
}
/*****************************************************************************
* vout_OSX_Display: displays previously rendered output
*****************************************************************************
* This function send the currently rendered image to image, waits until
* it is displayed and switch the two rendering buffers, preparing next frame.
*****************************************************************************/
void
vout_OSX_Display
(
vout_thread_t
*
p_vout
)
{
OSErr
qterror
;
// unsigned int x,y, height=p_vout->i_height, width=p_vout->i_width ;
CodecFlags
out_flags
;
PlanarPixmapInfoYUV420
y420_info
;
if
(
!
p_main
->
p_intf
->
p_sys
->
b_active
)
return
;
/* for(x=0; x < height; x++)
{
for(y=0; y < (width/2); y++)
{
p_vout->p_sys->p_img[(width/2)*x + y] =
(p_vout->p_rendered_pic->p_y[width*x + 2*y]) << 24 |
((p_vout->p_rendered_pic->p_u[(width/2)*(x/2) + y] ^ 0x80) << 16) |
(p_vout->p_rendered_pic->p_y[width*x + 2*y + 1] << 8) |
(p_vout->p_rendered_pic->p_v[(width/2)*(x/2) + y] ^ 0x80) ;
}
}
*/
y420_info
.
componentInfoY
.
offset
=
p_vout
->
p_rendered_pic
->
p_y
-
p_vout
->
p_sys
->
p_img
;
y420_info
.
componentInfoY
.
rowBytes
=
p_vout
->
i_width
;
y420_info
.
componentInfoCb
.
offset
=
p_vout
->
p_rendered_pic
->
p_u
-
p_vout
->
p_sys
->
p_img
;
y420_info
.
componentInfoCb
.
rowBytes
=
p_vout
->
i_width
/
2
;
y420_info
.
componentInfoCr
.
offset
=
p_vout
->
p_rendered_pic
->
p_v
-
p_vout
->
p_sys
->
p_img
;
y420_info
.
componentInfoCr
.
rowBytes
=
p_vout
->
i_width
/
2
;
memcpy
(
p_vout
->
p_sys
->
p_img
,
&
y420_info
,
sizeof
(
PlanarPixmapInfoYUV420
))
;
qterror
=
DecompressSequenceFrameWhen
(
p_vout
->
p_sys
->
i_seq
,
(
void
*
)
p_vout
->
p_sys
->
p_img
,
p_vout
->
p_sys
->
i_img_size
,
codecFlagUseScreenBuffer
,
&
out_flags
,
nil
,
nil
)
;
// intf_WarnMsg(1, "DecompressSequenceFrameWhen: %d", qterror) ;
}
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