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
54ca1c9a
Commit
54ca1c9a
authored
Oct 27, 2006
by
Damien Fouilleul
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
- added public log apis to access message log
parent
762c2acd
Changes
3
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
293 additions
and
6 deletions
+293
-6
include/vlc/libvlc.h
include/vlc/libvlc.h
+110
-6
src/Makefile.am
src/Makefile.am
+1
-0
src/control/log.c
src/control/log.c
+182
-0
No files found.
include/vlc/libvlc.h
View file @
54ca1c9a
...
...
@@ -73,7 +73,7 @@ int libvlc_exception_raised( libvlc_exception_t *p_exception );
* \param p_exception the exception to raise
* \param psz_message the exception message
*/
void
libvlc_exception_raise
(
libvlc_exception_t
*
p_exception
,
char
*
psz_format
,
...
);
void
libvlc_exception_raise
(
libvlc_exception_t
*
p_exception
,
c
onst
c
har
*
psz_format
,
...
);
/**
* Clear an exception object so it can be reused.
...
...
@@ -344,7 +344,7 @@ int libvlc_video_destroy( libvlc_input_t *, libvlc_exception_t *);
/**
* Resize the video output window
* Resize the
current
video output window
* \param p_instance libvlc instance
* \param width new width for video output window
* \param height new height for video output window
...
...
@@ -362,7 +362,7 @@ void libvlc_video_resize( libvlc_input_t *, int, int, libvlc_exception_t *);
typedef
int
libvlc_drawable_t
;
/**
* change the
video output paren
t
* change the
parent for the current the video outpu
t
* \param p_instance libvlc instance
* \param drawable the new parent window (Drawable on X11, CGrafPort on MacOSX, HWND on Win32)
* \param p_exception an initialized exception
...
...
@@ -371,7 +371,8 @@ typedef int libvlc_drawable_t;
int
libvlc_video_reparent
(
libvlc_input_t
*
,
libvlc_drawable_t
,
libvlc_exception_t
*
);
/**
* Set the video output parent
* Set the default video output parent
* this settings will be used as default for all video outputs
* \param p_instance libvlc instance
* \param drawable the new parent window (Drawable on X11, CGrafPort on MacOSX, HWND on Win32)
* \param p_exception an initialized exception
...
...
@@ -379,7 +380,8 @@ int libvlc_video_reparent( libvlc_input_t *, libvlc_drawable_t, libvlc_exception
void
libvlc_video_set_parent
(
libvlc_instance_t
*
,
libvlc_drawable_t
,
libvlc_exception_t
*
);
/**
* Set the video output size
* Set the default video output size
* this settings will be used as default for all video outputs
* \param p_instance libvlc instance
* \param width new width for video drawable
* \param height new height for video drawable
...
...
@@ -401,7 +403,8 @@ typedef struct
libvlc_rectangle_t
;
/**
* Set the video output viewport for a windowless video output (MacOS X only)
* Set the default video output viewport for a windowless video output (MacOS X only)
* this settings will be used as default for all video outputs
* \param p_instance libvlc instance
* \param view coordinates within video drawable
* \param clip coordinates within video drawable
...
...
@@ -615,6 +618,107 @@ LIBVLC_VLM_GET_MEDIA_ATTRIBUTE( seekable, int, Bool, 0);
/** @} */
/** @} */
/*****************************************************************************
* Message log handling
*****************************************************************************/
/** defgroup libvlc_log Log
* \ingroup libvlc
* LibVLC Message Logging
* @{
*/
/** This structure is opaque. It represents a libvlc log instance */
typedef
struct
libvlc_log_t
libvlc_log_t
;
/** This structure is opaque. It represents a libvlc log iterator */
typedef
struct
libvlc_log_iterator_t
libvlc_log_iterator_t
;
typedef
struct
libvlc_log_message_t
{
unsigned
sizeof_msg
;
/* sizeof() of message structure, must be filled in by user */
int
i_severity
;
/* 0=INFO, 1=ERR, 2=WARN, 3=DBG */
const
char
*
psz_type
;
/* module type */
const
char
*
psz_name
;
/* module name */
const
char
*
psz_header
;
/* optional header */
const
char
*
psz_message
;
/* message */
}
libvlc_log_message_t
;
/**
* Returns the VLC messaging verbosity level
* \param p_instance libvlc instance
* \param exception an initialized exception pointer
*/
unsigned
libvlc_get_log_verbosity
(
const
libvlc_instance_t
*
p_instance
,
libvlc_exception_t
*
p_e
);
/**
* Set the VLC messaging verbosity level
* \param p_log libvlc log instance
* \param exception an initialized exception pointer
*/
void
libvlc_set_log_verbosity
(
libvlc_instance_t
*
p_instance
,
unsigned
level
,
libvlc_exception_t
*
p_e
);
/**
* Open an instance to VLC message log
* \param p_instance libvlc instance
* \param exception an initialized exception pointer
*/
libvlc_log_t
*
libvlc_log_open
(
const
libvlc_instance_t
*
,
libvlc_exception_t
*
);
/**
* Close an instance of VLC message log
* \param p_log libvlc log instance
* \param exception an initialized exception pointer
*/
void
libvlc_log_close
(
libvlc_log_t
*
,
libvlc_exception_t
*
);
/**
* Returns the number of messages in log
* \param p_log libvlc log instance
* \param exception an initialized exception pointer
*/
unsigned
libvlc_log_count
(
const
libvlc_log_t
*
,
libvlc_exception_t
*
);
/**
* Clear all messages in log
* the log should be cleared on a regular basis to avoid clogging
* \param p_log libvlc log instance
* \param exception an initialized exception pointer
*/
void
libvlc_log_clear
(
libvlc_log_t
*
,
libvlc_exception_t
*
);
/**
* Allocate and returns a new iterator to messages in log
* \param p_log libvlc log instance
* \param exception an initialized exception pointer
*/
libvlc_log_iterator_t
*
libvlc_log_get_iterator
(
const
libvlc_log_t
*
,
libvlc_exception_t
*
);
/**
* Releases a previoulsy allocated iterator
* \param p_log libvlc log iterator
* \param exception an initialized exception pointer
*/
void
libvlc_log_iterator_free
(
libvlc_log_iterator_t
*
p_iter
,
libvlc_exception_t
*
p_e
);
/**
* Returns whether log iterator has more messages
* \param p_log libvlc log iterator
* \param exception an initialized exception pointer
*/
int
libvlc_log_iterator_has_next
(
const
libvlc_log_iterator_t
*
p_iter
,
libvlc_exception_t
*
p_e
);
/**
* Returns next log message
* the content of message must not be freed
* \param p_log libvlc log iterator
* \param exception an initialized exception pointer
*/
libvlc_log_message_t
*
libvlc_log_iterator_next
(
libvlc_log_iterator_t
*
p_iter
,
struct
libvlc_log_message_t
*
buffer
,
libvlc_exception_t
*
p_e
);
/** @} */
# ifdef __cplusplus
}
# endif
...
...
src/Makefile.am
View file @
54ca1c9a
...
...
@@ -332,6 +332,7 @@ SOURCES_libvlc_common = \
misc/devices.c
\
extras/libc.c
\
control/core.c
\
control/log.c
\
control/playlist.c
\
control/vlm.c
\
control/input.c
\
...
...
src/control/log.c
0 → 100644
View file @
54ca1c9a
/*****************************************************************************
* log.c: libvlc new API log functions
*****************************************************************************
* Copyright (C) 2005 the VideoLAN team
*
* $Id: core.c 14187 2006-02-07 16:37:40Z courmisch $
*
* Authors: Damien Fouilleul <damienf@videolan.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., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
*****************************************************************************/
#include <libvlc_internal.h>
#include <vlc/libvlc.h>
struct
libvlc_log_t
{
const
libvlc_instance_t
*
p_instance
;
msg_subscription_t
*
p_messages
;
};
struct
libvlc_log_iterator_t
{
msg_subscription_t
*
p_messages
;
int
i_start
;
int
i_pos
;
int
i_end
;
};
unsigned
libvlc_get_log_verbosity
(
const
libvlc_instance_t
*
p_instance
,
libvlc_exception_t
*
p_e
)
{
if
(
p_instance
)
{
return
p_instance
->
p_libvlc_int
->
i_verbose
;
}
RAISEZERO
(
"Invalid VLC instance!"
);
}
void
libvlc_set_log_verbosity
(
libvlc_instance_t
*
p_instance
,
unsigned
level
,
libvlc_exception_t
*
p_e
)
{
if
(
p_instance
)
{
p_instance
->
p_libvlc_int
->
i_verbose
=
level
;
}
else
RAISEVOID
(
"Invalid VLC instance!"
);
}
libvlc_log_t
*
libvlc_log_open
(
const
libvlc_instance_t
*
p_instance
,
libvlc_exception_t
*
p_e
)
{
struct
libvlc_log_t
*
p_log
=
(
struct
libvlc_log_t
*
)
malloc
(
sizeof
(
struct
libvlc_log_t
));
if
(
!
p_log
)
RAISENULL
(
"Out of memory"
);
p_log
->
p_instance
=
p_instance
;
p_log
->
p_messages
=
msg_Subscribe
(
p_instance
->
p_libvlc_int
,
MSG_QUEUE_NORMAL
);
if
(
!
p_log
->
p_messages
)
RAISENULL
(
"Out of memory"
);
return
p_log
;
}
void
libvlc_log_close
(
libvlc_log_t
*
p_log
,
libvlc_exception_t
*
p_e
)
{
if
(
p_log
&&
p_log
->
p_messages
)
{
msg_Unsubscribe
(
p_log
->
p_instance
->
p_libvlc_int
,
p_log
->
p_messages
);
free
(
p_log
);
}
else
RAISEVOID
(
"Invalid log object!"
);
}
unsigned
libvlc_log_count
(
const
libvlc_log_t
*
p_log
,
libvlc_exception_t
*
p_e
)
{
if
(
p_log
&&
p_log
->
p_messages
)
{
int
i_start
=
p_log
->
p_messages
->
i_start
;
int
i_stop
=
*
(
p_log
->
p_messages
->
pi_stop
);
return
i_stop
-
i_start
%
VLC_MSG_QSIZE
;
}
RAISEZERO
(
"Invalid log object!"
);
}
void
libvlc_log_clear
(
libvlc_log_t
*
p_log
,
libvlc_exception_t
*
p_e
)
{
if
(
p_log
&&
p_log
->
p_messages
)
{
vlc_mutex_lock
(
p_log
->
p_messages
->
p_lock
);
p_log
->
p_messages
->
i_start
=
*
(
p_log
->
p_messages
->
pi_stop
);
vlc_mutex_unlock
(
p_log
->
p_messages
->
p_lock
);
}
else
RAISEVOID
(
"Invalid log object!"
);
}
libvlc_log_iterator_t
*
libvlc_log_get_iterator
(
const
libvlc_log_t
*
p_log
,
libvlc_exception_t
*
p_e
)
{
if
(
p_log
&&
p_log
->
p_messages
)
{
struct
libvlc_log_iterator_t
*
p_iter
=
(
struct
libvlc_log_iterator_t
*
)
malloc
(
sizeof
(
struct
libvlc_log_iterator_t
));
if
(
!
p_iter
)
RAISENULL
(
"Out of memory"
);
vlc_mutex_lock
(
p_log
->
p_messages
->
p_lock
);
p_iter
->
p_messages
=
p_log
->
p_messages
;
p_iter
->
i_start
=
p_log
->
p_messages
->
i_start
;
p_iter
->
i_pos
=
p_log
->
p_messages
->
i_start
;
p_iter
->
i_end
=
*
(
p_log
->
p_messages
->
pi_stop
);
vlc_mutex_unlock
(
p_log
->
p_messages
->
p_lock
);
return
p_iter
;
}
RAISENULL
(
"Invalid log object!"
);
}
void
libvlc_log_iterator_free
(
libvlc_log_iterator_t
*
p_iter
,
libvlc_exception_t
*
p_e
)
{
if
(
p_iter
)
{
free
(
p_iter
);
}
else
RAISEVOID
(
"Invalid log iterator!"
);
}
int
libvlc_log_iterator_has_next
(
const
libvlc_log_iterator_t
*
p_iter
,
libvlc_exception_t
*
p_e
)
{
if
(
p_iter
)
{
return
p_iter
->
i_pos
!=
p_iter
->
i_end
;
}
RAISEZERO
(
"Invalid log iterator!"
);
}
libvlc_log_message_t
*
libvlc_log_iterator_next
(
libvlc_log_iterator_t
*
p_iter
,
struct
libvlc_log_message_t
*
buffer
,
libvlc_exception_t
*
p_e
)
{
if
(
p_iter
)
{
if
(
buffer
&&
(
sizeof
(
struct
libvlc_log_message_t
)
==
buffer
->
sizeof_msg
)
)
{
int
i_pos
=
p_iter
->
i_pos
;
if
(
i_pos
!=
p_iter
->
i_end
)
{
msg_item_t
*
msg
;
vlc_mutex_lock
(
p_iter
->
p_messages
->
p_lock
);
msg
=
p_iter
->
p_messages
->
p_msg
+
i_pos
;
buffer
->
i_severity
=
msg
->
i_type
;
buffer
->
psz_type
=
msg_GetObjectTypeName
(
msg
->
i_object_type
);
buffer
->
psz_name
=
msg
->
psz_module
;
buffer
->
psz_header
=
msg
->
psz_header
;
buffer
->
psz_message
=
msg
->
psz_msg
;
p_iter
->
i_pos
=
++
i_pos
%
VLC_MSG_QSIZE
;
vlc_mutex_unlock
(
p_iter
->
p_messages
->
p_lock
);
return
buffer
;
}
RAISENULL
(
"No more messages"
);
}
RAISENULL
(
"Invalid message buffer!"
);
}
RAISENULL
(
"Invalid log iterator!"
);
}
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