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
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
Hide 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