From sebastian.birk at googlemail.com Tue Jun 1 00:18:03 2010 From: sebastian.birk at googlemail.com (Sebastian Birk) Date: Tue, 1 Jun 2010 00:18:03 +0200 Subject: [vlc-devel] [PATCH] playlist: modified playlist_NodeCreate() Message-ID: <973ADC95-8584-4D0A-8FD5-D4B8D60A309F@googlemail.com> The passed flags in the variable i_flags are now applied to the new node. This solves bug ticket #3690, where it was possible to delete the "Playlist" and "Media Library" nodes, since the read-only flag was not set for them. --- src/playlist/tree.c | 3 +++ 1 files changed, 3 insertions(+), 0 deletions(-) diff --git a/src/playlist/tree.c b/src/playlist/tree.c index eae53bd..e7fdebe 100644 --- a/src/playlist/tree.c +++ b/src/playlist/tree.c @@ -85,6 +85,9 @@ playlist_item_t * playlist_NodeCreate( playlist_t *p_playlist, playlist_SendAddNotify( p_playlist, p_item->i_id, p_parent ? p_parent->i_id : -1, !( i_flags & PLAYLIST_NO_REBUILD )); + + p_item->i_flags |= i_flags; + return p_item; } -- 1.7.1 -------------- next part -------------- A non-text attachment was scrubbed... Name: PGP.sig Type: application/pgp-signature Size: 203 bytes Desc: Signierter Teil der Nachricht URL: From alex at eyeos.org Tue Jun 1 01:37:08 2010 From: alex at eyeos.org (Alex Fiestas) Date: Tue, 1 Jun 2010 01:37:08 +0200 Subject: [vlc-devel] [VLC] #3698: Transform filter not working VLC 1.1 RC1 In-Reply-To: References: <048.e8189471ff3a16f7b739cde9c4008664@videolan.org> <057.51e4e17be8f0f08f4dd0953090814fd5@videolan.org> Message-ID: Ups, sorry and thanks El 01/06/2010 1:27, "VLC" escribi?: #3698: Transform filter not working VLC 1.1 RC1 -----------------------+----------------------------... Type: defect | Status: closed Priority: normal | Milestone: Bugs paradize Component: Filters | Version: master... Severity: normal | Resolution: duplicate Keywords: | Platform: Linux Difficulty: unknown | Wip: Not st... -----------------------+---------------------------------------------------- Changes (by jb): * status: new => closed * resolution: => duplicate Comment: Sorry afiestas, this is a duplicate and it was fixed a few days ago (wait for RC2) #3566 -- Ticket URL: VLC VLC media player -------------- next part -------------- An HTML attachment was scrubbed... URL: From jb at videolan.org Tue Jun 1 14:46:01 2010 From: jb at videolan.org (Jean-Baptiste Kempf) Date: Tue, 1 Jun 2010 14:46:01 +0200 Subject: [vlc-devel] [PATCH] playlist: modified playlist_NodeCreate() In-Reply-To: <973ADC95-8584-4D0A-8FD5-D4B8D60A309F@googlemail.com> References: <973ADC95-8584-4D0A-8FD5-D4B8D60A309F@googlemail.com> Message-ID: <20100601124601.GA22828@videolan.org> On Tue, Jun 01, 2010 at 12:18:03AM +0200, Sebastian Birk wrote : > The passed flags in the variable i_flags are now applied to the new node. > This solves bug ticket #3690, where it was possible to delete the "Playlist" and > "Media Library" nodes, since the read-only flag was not set for them. > --- > src/playlist/tree.c | 3 +++ > 1 files changed, 3 insertions(+), 0 deletions(-) > > diff --git a/src/playlist/tree.c b/src/playlist/tree.c > index eae53bd..e7fdebe 100644 > --- a/src/playlist/tree.c > +++ b/src/playlist/tree.c > @@ -85,6 +85,9 @@ playlist_item_t * playlist_NodeCreate( playlist_t *p_playlist, > playlist_SendAddNotify( p_playlist, p_item->i_id, > p_parent ? p_parent->i_id : -1, > !( i_flags & PLAYLIST_NO_REBUILD )); > + > + p_item->i_flags |= i_flags; > + > return p_item; Any comments on this ? Best Regards, -- Jean-Baptiste Kempf http://www.jbkempf.com/ From pdherbemont at gmail.com Wed Jun 2 00:07:53 2010 From: pdherbemont at gmail.com (Pierre d'Herbemont) Date: Wed, 2 Jun 2010 00:07:53 +0200 Subject: [vlc-devel] [VLC] #3689: File.m Not Found In-Reply-To: <4C033AE7.90004@danielmichel.net> References: <051.45bda6cffe28971ac0f15dc9a21a9876@videolan.org> <060.70d9830b77cf3b3e7d2514ff13bbb1ca@videolan.org> <4C033AE7.90004@danielmichel.net> Message-ID: On May 31, 2010, at 6:28 AM, Danny Michel wrote: > any ideas? > > On 5/29/10 12:04 PM, VLC wrote: >> #3689: File.m Not Found $ git pull :) Pierre. From david.glaude at gmail.com Wed Jun 2 01:52:15 2010 From: david.glaude at gmail.com (David Glaude) Date: Wed, 2 Jun 2010 01:52:15 +0200 Subject: [vlc-devel] SoC 2010: ASF and other demuxer/muxer improvements In-Reply-To: <5298005A-8734-40CC-A2C4-51915B2E9727@iki.fi> References: <5298005A-8734-40CC-A2C4-51915B2E9727@iki.fi> Message-ID: Here are various ASF related VLC misbehaviour. Set your prefered EU language such as "French": Tools > Preferences > Show settings: All > Input /Codecs > Track settings > Audio language fill in "fr" Be ready to paste the folowing URLs to VLC "Open Network Stream": (1) http://vodlux.europarl.europa.eu/download/nas/nasvod01/vod0405/2010/wm/VODChapter_20100517_17050500_17052700.wmv (2) mms:// vodlux.europarl.europa.eu/wmv/nas/nasvod01/vod0405/2010/wm/VODChapter_20100517_17050500_17052700.wmv?wmcache=0 It is the same file wich countain a multi-bitrate-video + multi-language (3V+23A). The first URL is an http download from an Apache (should be the same behaviour as a local file). The second URL is streaming by a Windows Media Streaming Server. Now you are ready to experience various "problem": A) If you take the http:// URL, VLC does start 3 video rather that one, but play audio in your prefered language. This might be considered as a "feature" but in fact it is properly writen in the file and VLC knows that the 3 video track are mutualy excluding each other. asf debug: found object guid: 0xa08649cf-0x4775-0x4670-0x8a166e35357566cd size:48 asf debug: read "advanced mutual exclusion object" asf debug: - stream=24 asf debug: - stream=25 asf debug: - stream=26 VLC should choose (based on wich criteria) to only display one of the video. VLC should have a way for the user to specify the available bandwidth (or try to autodetect). This behaviour can be found in Windows Media Player "Connection Speed" setting. The behaviour of the "Video > Video Track" is rather strange. Only one video track seems to be enable (even if you see 3 copies of the video). You can switch video track, but it does not change anything. However, you can disable the video, then select one video track and only that one appear. But then, if you select an additionnal video track, you get two tracks where you would have expect a "radio button" behaviour where you switch from one track to another. On the Audio side, it work perfectly, your prefered language is playing, you can change audio track and only one audio is playing at a time. B) If you take the mms:// URL, VLC does start a single video (GOOD) but the audio track is track number 1 "Zulu". Somehow, VLC does not let you: B1) get the audio track you prefer B2) see the list of available audio track B3) change audio track B4) see the list of available video track B5) change video track VLC know very well about the ASF format and the special GUID to talk about mutual exclusion, but something is missing to fully use this information. main debug: selected audio language[0] fr main debug: selected audio language[1] any access_mms info: selecting stream[0x1] audio (38 Kib/s) access_mms info: ignoring stream[0x2] audio (38 Kib/s) access_mms info: ignoring stream[0x3] audio (38 Kib/s) access_mms info: selecting stream[0x18] video (528 Kib/s) access_mms info: ignoring stream[0x19] video (278 Kib/s) access_mms info: ignoring stream[0x1a] video (153 Kib/s) asf debug: found object guid: 0x7c4346a9-0xefe0-0x4bfc-0xb229393ede415c85 size:193 asf debug: read "language list object" 23 entries asf debug: - 'en-gb' asf debug: - 'zu' asf debug: - 'fr' If you have plan to work on ASF, you may want to look into those easy to reproduce (maybe not to fix) issues. If needed I can fill bug in the trac of vlc. David Glaude 2010/5/31 Juho V?h?-Herttua > Hello, > > Sorry for writing this introduction a bit late, I've written some other > emails on this list though. I am a student of Aalto University School of > Science and Technology (formerly known as Helsinki University of Technology) > from Finland and finishing my 7th year graduating soon. > > I've worked with the ASF format and some other demuxers before and my main > project now is to review and improve the ASF demuxer and muxer of VLC. Since > I don't have so specific plan, if anyone on this list has anything remotely > related that would need to be improved, I'd be very happy to know. Other > than that I'll probably go through the bug tracker and see around. Since I'm > mostly using Mac OS X, I'll be probably testing some Mac related things as > well. > > I'm "juhovh" on IRC and hang out there pretty much always when I'm on > computer, so contacting through IRC is probably most convenient. I'm happy > to get to know all of you guys, hope we can get this to work. > > Project page can be found from: > http://wiki.videolan.org/SoC_2010_ASF_Demuxer > > Git repository is in github: > http://github.com/juhovh/vlc > > > > Juho > > _______________________________________________ > vlc-devel mailing list > To unsubscribe or modify your subscription options: > http://mailman.videolan.org/listinfo/vlc-devel > -------------- next part -------------- An HTML attachment was scrubbed... URL: From juhovh at iki.fi Wed Jun 2 09:24:46 2010 From: juhovh at iki.fi (=?ISO-8859-1?Q?Juho_V=E4h=E4-Herttua?=) Date: Wed, 02 Jun 2010 10:24:46 +0300 Subject: [vlc-devel] SoC 2010: ASF and other demuxer/muxer improvements In-Reply-To: References: <5298005A-8734-40CC-A2C4-51915B2E9727@iki.fi> Message-ID: <4C06073E.7050600@iki.fi> 2.6.2010 2:52, David Glaude kirjoitti: > Here are various ASF related VLC misbehaviour. ... > If you have plan to work on ASF, you may want to look into those easy > to reproduce (maybe not to fix) issues. > If needed I can fill bug in the trac of vlc. Thank you, this was exactly the kind of things I was expecting to hear from. Most important is to have some test streams, like you just provided, for debugging. I'll add it on my to do list and see what it would require to fix, I'll let you know if there's progress. Juho From sebastien-devel at celeos.eu Wed Jun 2 09:32:36 2010 From: sebastien-devel at celeos.eu (=?iso-8859-1?b?U+liYXN0aWVu?= Escudier) Date: Wed, 02 Jun 2010 09:32:36 +0200 Subject: [vlc-devel] [PATCH] input : apply start time option immediately Message-ID: <1275463956.4c06091405148@imp.celeos.eu> Hi, This patch avoids to have a few frame of the beginning of the video. Instead, the first frame will be the one at start-time option. So if someone with better knowledge of input thread can confirm this patch is ok ? Regards, Seb. -------------- next part -------------- A non-text attachment was scrubbed... Name: 0001-input-apply-start-time-option-immediately.patch Type: text/x-diff Size: 869 bytes Desc: not available URL: From jpeg at videolan.org Wed Jun 2 16:25:37 2010 From: jpeg at videolan.org (Jean-Philippe =?utf-8?q?Andr=C3=A9?=) Date: Wed, 2 Jun 2010 22:25:37 +0800 Subject: [vlc-devel] =?utf-8?q?=5Bvlc-commits=5D_commit=3A_Skins=3A_=22fil?= =?utf-8?q?e=22_shortcut_for_skins_access=5Fdemux_=28=26_decode_URI=29_=28?= =?utf-8?q?_Jean-Philippe_Andr=C3=A9_=29?= In-Reply-To: References: <20100531061248.061E6E14AF@albiero.videolan.org> <4fb508fdb3b3f67749e2403f6dca95bf@chewa.net> Message-ID: <201006022225.37252.jpeg@videolan.org> On Monday 31 May 2010 14:59:17 you wrote: > On Mon, May 31, 2010 at 2:51 PM, R?mi Denis-Courmont wrote: > > On Mon, 31 May 2010 08:49:23 +0200, R?mi Denis-Courmont > > > > wrote: > >> Please revert this. This is a huge hack and we have been trying to cut > >> on the number of plugins hijacking file://. What you open MUST be a > >> media file. Otherwise, the security model is broken. Mind you that's > >> why VLC cannot open say LUA files nor shebang shell scripts, even > >> though it would be trivial to implement. > > > > In fact skins should not be an access_demux at all. That's a braindead > > idea. Demux removed. Here we go: 79d1e54c67. There are new optional (ie. disabled by default) file associations with the extensions .vlt and .wsz for VLC under Windows. Best, -- Jean-Philippe Andr? (jpeg) From remi at remlab.net Wed Jun 2 17:20:46 2010 From: remi at remlab.net (=?UTF-8?Q?R=C3=A9mi_Denis-Courmont?=) Date: Wed, 02 Jun 2010 17:20:46 +0200 Subject: [vlc-devel] =?utf-8?q?=5Bvlc-commits=5D_commit=3A_Skins=3A_=22fil?= =?utf-8?q?e=22_shortcut_for_skins_access=5Fdemux_=28=26_decode_URI=29_=28?= =?utf-8?q?_Jean-Philippe_Andr=C3=A9_=29?= In-Reply-To: <201006022225.37252.jpeg@videolan.org> References: <20100531061248.061E6E14AF@albiero.videolan.org> <4fb508fdb3b3f67749e2403f6dca95bf@chewa.net> <201006022225.37252.jpeg@videolan.org> Message-ID: On Wed, 2 Jun 2010 22:25:37 +0800, "Jean-Philippe Andr?" wrote: > Demux removed. Here we go: 79d1e54c67. > > There are new optional (ie. disabled by default) file associations with > the extensions .vlt and .wsz for VLC under Windows. Good. I wonder how this is supposed to be done on Linux :( I guess we should add some hack for DnD in Qt4 as well. -- R?mi Denis-Courmont http://www.remlab.net http://fi.linkedin.com/in/remidenis From ileoo at videolan.org Wed Jun 2 17:57:48 2010 From: ileoo at videolan.org (Ilkka Ollakka) Date: Wed, 2 Jun 2010 18:57:48 +0300 Subject: [vlc-devel] =?iso-8859-1?q?=5Bvlc-commits=5D_commit=3A_Skins=3A_?= =?iso-8859-1?q?=22file=22_shortcut_for_skins_access=5Fdemux_=28=26?= =?iso-8859-1?q?_decode_URI=29_=28_Jean-Philippe_Andr=E9_=29?= In-Reply-To: References: <20100531061248.061E6E14AF@albiero.videolan.org> <4fb508fdb3b3f67749e2403f6dca95bf@chewa.net> <201006022225.37252.jpeg@videolan.org> Message-ID: <20100602155748.GJ21956@linux-3azp> On Wed, Jun 02, 2010 at 05:20:46PM +0200, R?mi Denis-Courmont wrote: > On Wed, 2 Jun 2010 22:25:37 +0800, "Jean-Philippe Andr?" > wrote: > > Demux removed. Here we go: 79d1e54c67. > > There are new optional (ie. disabled by default) file associations with > > the extensions .vlt and .wsz for VLC under Windows. > Good. I wonder how this is supposed to be done on Linux :( > I guess we should add some hack for DnD in Qt4 as well. Couldn't we just make second .desktop-file for those skins-file mime-types/extensions (I have small memoryprint that you maybe could to something like this). -- Ilkka Ollakka Kiss your keyboard goodbye! -------------- next part -------------- A non-text attachment was scrubbed... Name: not available Type: application/pgp-signature Size: 490 bytes Desc: not available URL: From remi at remlab.net Wed Jun 2 20:43:56 2010 From: remi at remlab.net (=?utf-8?q?R=C3=A9mi?= Denis-Courmont) Date: Wed, 2 Jun 2010 21:43:56 +0300 Subject: [vlc-devel] =?utf-8?q?=5Bvlc-commits=5D_commit=3A_--no-xlib=3A_pr?= =?utf-8?q?event_use_of_XInitThreads=28=29_and_hence_Xlib_=28_R=C3=A9mi_De?= =?utf-8?q?nis-Courmont_=29?= In-Reply-To: <20100602183928.CEB16E6EC1@albiero.videolan.org> References: <20100602183928.CEB16E6EC1@albiero.videolan.org> Message-ID: <201006022143.56941.remi@remlab.net> Le mercredi 2 juin 2010 21:39:28 git at videolan.org, vous avez ?crit : > vlc | branch: master | R?mi Denis-Courmont | Wed Jun 2 > 21:30:49 2010 +0300| [95c95cc91ac583b76582b63dfd6c95ca5fdde592] | > committer: R?mi Denis-Courmont > > --no-xlib: prevent use of XInitThreads() and hence Xlib This should apply to VAAPI too. But I could not figure out how to do it there, within 15 seconds. -- R?mi Denis-Courmont http://www.remlab.net/ http://fi.linkedin.com/in/remidenis From linkfanel at yahoo.fr Thu Jun 3 07:27:32 2010 From: linkfanel at yahoo.fr (Pierre Ynard) Date: Thu, 3 Jun 2010 07:27:32 +0200 Subject: [vlc-devel] =?iso-8859-1?q?=5BPATCH=5D=A0Merge_VoD_module_into_RT?= =?iso-8859-1?q?P_stream_output_module?= Message-ID: <20100603052732.GA501@via.ecp.fr> Hello, This patch is aimed at bringing a cleaner and better working solution for VoD than the bad hack that we currently have. Instead of (badly) duplicating large portions of codes, it reuses the existing RTSP stack and factorizes the RTP payload code, and provides support for a number of ES not limited to one audio and one video tracks, as well as for missing features in RTSP headers. The VoD module is responsible for starting and running the RTSP stack. When a VoD media instance is started, the RTP stream output hooks back into the VoD code (and through it, into the RTSP stack), to retrieve accurate, already set up parameters, and provide playback data. It currently does so by walking up the object tree from the RTP sout to the VoD object. I used to use a simple vlc_object_find(INPUT, PARENT) (which was pretty safe since the VoD core doesn't use sout-keep, if I understand the situation correctly), but this was recently broken. Once this is figured out, I can properly rewrite this part. Or, an alternative approach would be to pass a pointer to the vod_media_t in the #rtp stream output chain, but this is a little ugly too (though it would save a lock). Opinions? diff --git a/modules/stream_out/Modules.am b/modules/stream_out/Modules.am index 1bfafeb..8c757ba 100644 --- a/modules/stream_out/Modules.am +++ b/modules/stream_out/Modules.am @@ -34,7 +34,7 @@ libvlc_LTLIBRARIES += \ libvlc_LTLIBRARIES += \ libstream_out_rtp_plugin.la libstream_out_rtp_plugin_la_SOURCES = \ - rtp.c rtp.h rtpfmt.c rtcp.c rtsp.c + rtp.c rtp.h rtpfmt.c rtcp.c rtsp.c vod.c libstream_out_rtp_plugin_la_CFLAGS = $(AM_CFLAGS) libstream_out_rtp_plugin_la_LIBADD = $(AM_LIBADD) libstream_out_rtp_plugin_la_DEPENDENCIES = diff --git a/modules/stream_out/rtp.c b/modules/stream_out/rtp.c index ef40d88..86e6025 100644 --- a/modules/stream_out/rtp.c +++ b/modules/stream_out/rtp.c @@ -1,10 +1,11 @@ /***************************************************************************** * rtp.c: rtp stream output module ***************************************************************************** - * Copyright (C) 2003-2004 the VideoLAN team + * Copyright (C) 2003-2004, 2010 the VideoLAN team * Copyright ? 2007-2008 R?mi Denis-Courmont * * Authors: Laurent Aimar + * Pierre Ynard * * 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 @@ -38,7 +39,6 @@ #include #include #include -#include #include #ifdef HAVE_SRTP # include @@ -160,6 +160,13 @@ static const char *const ppsz_protocols[] = { #define RFC3016_LONGTEXT N_( \ "This allows you to stream MPEG4 LATM audio streams (see RFC3016)." ) +#define RTSP_HOST_TEXT N_( "RTSP host address" ) +#define RTSP_HOST_LONGTEXT N_( \ + "This defines the address, port and path the RTSP VOD server will listen " \ + "on.\nSyntax is address:port/path. The default is to listen on all "\ + "interfaces (address 0.0.0.0), on port 554, with no path.\nTo listen " \ + "only on the local interface, use \"localhost\" as address." ) + static int Open ( vlc_object_t * ); static void Close( vlc_object_t * ); @@ -221,7 +228,22 @@ vlc_module_begin () add_bool( SOUT_CFG_PREFIX "mp4a-latm", false, NULL, RFC3016_TEXT, RFC3016_LONGTEXT, false ) + add_string( SOUT_CFG_PREFIX "vod-session", "", NULL, "vod", + "vod", true ) + set_callbacks( Open, Close ) + + add_submodule () + set_shortname( N_("RTSP VoD" ) ) + set_description( N_("RTSP VoD server") ) + set_category( CAT_SOUT ) + set_subcategory( SUBCAT_SOUT_VOD ) + set_capability( "vod server", 0 ) + set_callbacks( OpenVoD, CloseVoD ) + add_shortcut( "rtsp" ) + add_string ( "rtsp-host", NULL, NULL, RTSP_HOST_TEXT, + RTSP_HOST_LONGTEXT, true ) + vlc_module_end () /***************************************************************************** @@ -231,7 +253,7 @@ static const char *const ppsz_sout_options[] = { "dst", "name", "port", "port-audio", "port-video", "*sdp", "ttl", "mux", "sap", "description", "url", "email", "phone", "proto", "rtcp-mux", "caching", "key", "salt", - "mp4a-latm", NULL + "mp4a-latm", "vod-session", NULL }; static sout_stream_id_t *Add ( sout_stream_t *, es_format_t * ); @@ -290,6 +312,10 @@ struct sout_stream_sys_t int i_ttl:9; bool b_latm; + /* VoD */ + char *psz_vod_session; + vod_media_t *p_vod_media; + /* in case we do TS/PS over rtp */ sout_mux_t *p_mux; sout_access_out_t *p_grab; @@ -314,7 +340,6 @@ struct sout_stream_id_t sout_stream_t *p_stream; /* rtp field */ uint16_t i_sequence; - uint8_t i_payload_type; bool b_ts_init; uint32_t i_ts_offset; uint8_t ssrc[4]; @@ -323,13 +348,8 @@ struct sout_stream_id_t uint16_t i_seq_sent_next; /* for sdp */ - const char *psz_enc; - char *psz_fmtp; - int i_clock_rate; + rtp_format_t rtp_fmt; int i_port; - int i_cat; - int i_channels; - int i_bitrate; /* Packetizer specific fields */ int i_mtu; @@ -445,11 +465,33 @@ static int Open( vlc_object_t *p_this ) free (psz); var_Create (p_this, "dccp-service", VLC_VAR_STRING); - if( ( p_sys->psz_destination == NULL ) && !b_rtsp ) + int64_t i_pts_init; + p_sys->psz_vod_session = var_GetNonEmptyString (p_stream, SOUT_CFG_PREFIX + "vod-session"); + if (p_sys->psz_vod_session != NULL) { - msg_Err( p_stream, "missing destination and not in RTSP mode" ); - free( p_sys ); - return VLC_EGENERIC; + const char *mux; + p_sys->p_vod_media = vod_get_session(p_stream, p_sys->psz_vod_session, + &mux, &i_pts_init); + if (p_sys->p_vod_media == NULL) + { + msg_Err(p_stream, "no vod session '%s'", p_sys->psz_vod_session); + free(p_sys->psz_vod_session); + free(p_sys); + return VLC_EGENERIC; + } + var_SetString(p_stream, SOUT_CFG_PREFIX "mux", mux); + } + else + { + p_sys->p_vod_media = NULL; + + if( p_sys->psz_destination == NULL && !b_rtsp ) + { + msg_Err( p_stream, "missing destination and not in RTSP mode" ); + free( p_sys ); + return VLC_EGENERIC; + } } p_sys->i_ttl = var_GetInteger( p_stream, SOUT_CFG_PREFIX "ttl" ); @@ -470,8 +512,8 @@ static int Open( vlc_object_t *p_this ) * PTS for timestamp computations, and then actual PTS will catch * up using offsets. */ p_sys->i_npt_zero = VLC_TS_INVALID; - p_sys->i_pts_zero = mdate(); /* arbitrary value, could probably be - * random */ + p_sys->i_pts_zero = p_sys->p_vod_media != NULL ? i_pts_init : mdate(); + /* arbitrary value, could probably be random */ p_sys->payload_bitmap = 0xFFFFFFFF; p_sys->i_es = 0; p_sys->es = NULL; @@ -505,6 +547,7 @@ static int Open( vlc_object_t *p_this ) free( psz ); vlc_mutex_destroy( &p_sys->lock_sdp ); vlc_mutex_destroy( &p_sys->lock_es ); + free( p_sys->psz_vod_session ); free( p_sys->psz_destination ); free( p_sys ); return VLC_EGENERIC; @@ -520,6 +563,7 @@ static int Open( vlc_object_t *p_this ) sout_AccessOutDelete( p_sys->p_grab ); vlc_mutex_destroy( &p_sys->lock_sdp ); vlc_mutex_destroy( &p_sys->lock_es ); + free( p_sys->psz_vod_session ); free( p_sys->psz_destination ); free( p_sys ); return VLC_EGENERIC; @@ -532,6 +576,7 @@ static int Open( vlc_object_t *p_this ) sout_AccessOutDelete( p_sys->p_grab ); vlc_mutex_destroy( &p_sys->lock_sdp ); vlc_mutex_destroy( &p_sys->lock_es ); + free( p_sys->psz_vod_session ); free( p_sys->psz_destination ); free( p_sys ); return VLC_EGENERIC; @@ -638,6 +683,7 @@ static void Close( vlc_object_t * p_this ) #endif free( p_sys->psz_sdp_file ); } + free( p_sys->psz_vod_session ); free( p_sys->psz_destination ); free( p_sys ); } @@ -673,7 +719,7 @@ static void SDPHandleUrl( sout_stream_t *p_stream, const char *psz_url ) } /* FIXME test if destination is multicast or no destination at all */ - p_sys->rtsp = RtspSetup( p_stream, &url ); + p_sys->rtsp = RtspSetup( VLC_OBJECT(p_stream), NULL, &url ); if( p_sys->rtsp == NULL ) msg_Err( p_stream, "cannot export SDP as RTSP" ); else @@ -681,6 +727,7 @@ static void SDPHandleUrl( sout_stream_t *p_stream, const char *psz_url ) { sout_stream_id_t *id = p_sys->es[0]; id->rtsp_id = RtspAddId( p_sys->rtsp, id, GetDWBE( id->ssrc ), + id->rtp_fmt.clock_rate, p_sys->psz_destination, p_sys->i_ttl, id->i_port, id->i_port + 1 ); } @@ -809,9 +856,10 @@ char *SDPGenerate( sout_stream_t *p_stream, const char *rtsp_url ) for( i = 0; i < p_sys->i_es; i++ ) { sout_stream_id_t *id = p_sys->es[i]; + rtp_format_t *rtp_fmt = &id->rtp_fmt; const char *mime_major; /* major MIME type */ - switch( id->i_cat ) + switch( rtp_fmt->cat ) { case VIDEO_ES: mime_major = "video"; @@ -827,9 +875,9 @@ char *SDPGenerate( sout_stream_t *p_stream, const char *rtsp_url ) } sdp_AddMedia( &psz_sdp, mime_major, proto, inclport * id->i_port, - id->i_payload_type, false, id->i_bitrate, - id->psz_enc, id->i_clock_rate, id->i_channels, - id->psz_fmtp); + rtp_fmt->payload_type, false, rtp_fmt->bitrate, + rtp_fmt->ptname, rtp_fmt->clock_rate, rtp_fmt->channels, + rtp_fmt->fmtp); /* cf RFC4566 ?5.14 */ if( inclport && !p_sys->rtcp_mux && (id->i_port & 1) ) @@ -862,18 +910,6 @@ out: * RTP mux *****************************************************************************/ -static void sprintf_hexa( char *s, uint8_t *p_data, int i_data ) -{ - static const char hex[16] = "0123456789abcdef"; - - for( int i = 0; i < i_data; i++ ) - { - s[2*i+0] = hex[(p_data[i]>>4)&0xf]; - s[2*i+1] = hex[(p_data[i] )&0xf]; - } - s[2*i_data] = '\0'; -} - /** * Shrink the MTU down to a fixed packetization time (for audio). */ @@ -881,8 +917,8 @@ static void rtp_set_ptime (sout_stream_id_t *id, unsigned ptime_ms, size_t bytes) { /* Samples per second */ - size_t spl = (id->i_clock_rate - 1) * ptime_ms / 1000 + 1; - bytes *= id->i_channels; + size_t spl = (id->rtp_fmt.clock_rate - 1) * ptime_ms / 1000 + 1; + bytes *= id->rtp_fmt.channels; spl *= bytes; if (spl < rtp_mtu (id)) /* MTU is big enough for ptime */ @@ -891,11 +927,11 @@ rtp_set_ptime (sout_stream_id_t *id, unsigned ptime_ms, size_t bytes) id->i_mtu = 12 + (((id->i_mtu - 12) / bytes) * bytes); } -uint32_t rtp_compute_ts( const sout_stream_id_t *id, int64_t i_pts ) +uint32_t rtp_compute_ts( unsigned i_clock_rate, int64_t i_pts ) { /* NOTE: this plays nice with offsets because the calculations are * linear. */ - return i_pts * (int64_t)id->i_clock_rate / CLOCK_FREQ; + return i_pts * (int64_t)i_clock_rate / CLOCK_FREQ; } /** Add an ES as a new RTP stream */ @@ -917,33 +953,6 @@ static sout_stream_id_t *Add( sout_stream_t *p_stream, es_format_t *p_fmt ) return NULL; id->p_stream = p_stream; - /* Look for free dymanic payload type */ - id->i_payload_type = 96 + clz32 (p_sys->payload_bitmap); - assert (id->i_payload_type < 128); - - vlc_rand_bytes (&id->i_sequence, sizeof (id->i_sequence)); - vlc_rand_bytes (id->ssrc, sizeof (id->ssrc)); - - id->psz_enc = NULL; - id->psz_fmtp = NULL; - id->i_clock_rate = 90000; /* most common case for video */ - id->i_channels = 0; - if( p_fmt != NULL ) - { - id->i_cat = p_fmt->i_cat; - if( p_fmt->i_cat == AUDIO_ES ) - { - id->i_clock_rate = p_fmt->audio.i_rate; - id->i_channels = p_fmt->audio.i_channels; - } - id->i_bitrate = p_fmt->i_bitrate/1000; /* Stream bitrate in kbps */ - } - else - { - id->i_cat = VIDEO_ES; - id->i_bitrate = 0; - } - id->i_mtu = var_InheritInteger( p_stream, "mtu" ); if( id->i_mtu <= 12 + 16 ) id->i_mtu = 576 - 20 - 8; /* pessimistic */ @@ -964,6 +973,57 @@ static sout_stream_id_t *Add( sout_stream_t *p_stream, es_format_t *p_fmt ) id->i_caching = (int64_t)1000 * var_GetInteger( p_stream, SOUT_CFG_PREFIX "caching"); + vlc_rand_bytes (&id->i_sequence, sizeof (id->i_sequence)); + vlc_rand_bytes (id->ssrc, sizeof (id->ssrc)); + + id->rtp_fmt.ptname = NULL; + + if (p_sys->p_vod_media != NULL) + { + uint32_t ssrc; + int val = vod_init_id(p_sys->p_vod_media, p_sys->psz_vod_session, + p_fmt ? p_fmt->i_id : 0, id, &id->rtp_fmt, + &ssrc, &id->i_seq_sent_next); + if (val == VLC_SUCCESS) + { + memcpy(id->ssrc, &ssrc, sizeof(id->ssrc)); + /* This is ugly, but id->i_seq_sent_next needs to be + * initialized inside vod_init_id() to avoid race + * conditions. */ + id->i_sequence = id->i_seq_sent_next; + } + + /* XXX: It might happen that the VoD media gives us a dynamic + * payload type that is already in use in p_sys->payload_bitmap, + * because it was taken by a previous ES that was missing in + * the VoD media. */ + + /* vod_init_id() may fail either because the ES wasn't found in + * the VoD media, or because that track wasn't SETUP. In the + * former case, id->rtp_fmt was left untouched, so we fill it + * in right after this. */ + } + + if (id->rtp_fmt.ptname == NULL) + { + char *psz = var_GetNonEmptyString( p_stream, SOUT_CFG_PREFIX "mux" ); + if (p_fmt == NULL && psz == NULL) + goto error; + rtp_get_fmt(VLC_OBJECT(p_stream), p_fmt, psz, &id->rtp_fmt); + free( psz ); + + if (id->rtp_fmt.payload_type >= 96) + { + /* Look for free dymanic payload type */ + id->rtp_fmt.payload_type = 96 + clz32 (p_sys->payload_bitmap); + assert (id->rtp_fmt.payload_type < 128); + } + } + + if (id->rtp_fmt.payload_type >= 96) + /* Mark dynamic payload type in use */ + p_sys->payload_bitmap &= ~(1 << (127 - id->rtp_fmt.payload_type)); + #ifdef HAVE_SRTP char *key = var_CreateGetNonEmptyString (p_stream, SOUT_CFG_PREFIX"key"); if (key) @@ -1034,7 +1094,7 @@ static sout_stream_id_t *Add( sout_stream_t *p_stream, es_format_t *p_fmt ) case IPPROTO_DCCP: { const char *code; - switch (id->i_cat) + switch (id->rtp_fmt.cat) { case VIDEO_ES: code = "RTPV"; break; case AUDIO_ES: code = "RTPARTPV"; break; @@ -1082,92 +1142,42 @@ static sout_stream_id_t *Add( sout_stream_t *p_stream, es_format_t *p_fmt ) } } - if( p_fmt == NULL ) - { - char *psz = var_GetNonEmptyString( p_stream, SOUT_CFG_PREFIX "mux" ); - - if( psz == NULL ) /* Uho! */ - ; - else - if( strncmp( psz, "ts", 2 ) == 0 ) - { - id->i_payload_type = 33; - id->psz_enc = "MP2T"; - } - else - { - id->psz_enc = "MP2P"; - } - free( psz ); - } - else + if( p_fmt != NULL ) switch( p_fmt->i_codec ) { case VLC_CODEC_MULAW: - if( p_fmt->audio.i_channels == 1 && p_fmt->audio.i_rate == 8000 ) - id->i_payload_type = 0; - id->psz_enc = "PCMU"; - id->pf_packetize = rtp_packetize_split; - rtp_set_ptime (id, 20, 1); - break; case VLC_CODEC_ALAW: - if( p_fmt->audio.i_channels == 1 && p_fmt->audio.i_rate == 8000 ) - id->i_payload_type = 8; - id->psz_enc = "PCMA"; + case VLC_CODEC_U8: id->pf_packetize = rtp_packetize_split; rtp_set_ptime (id, 20, 1); break; case VLC_CODEC_S16B: case VLC_CODEC_S16L: - if( p_fmt->audio.i_channels == 1 && p_fmt->audio.i_rate == 44100 ) - { - id->i_payload_type = 11; - } - else if( p_fmt->audio.i_channels == 2 && - p_fmt->audio.i_rate == 44100 ) - { - id->i_payload_type = 10; - } - id->psz_enc = "L16"; if( p_fmt->i_codec == VLC_CODEC_S16B ) id->pf_packetize = rtp_packetize_split; else id->pf_packetize = rtp_packetize_swab; rtp_set_ptime (id, 20, 2); break; - case VLC_CODEC_U8: - id->psz_enc = "L8"; - id->pf_packetize = rtp_packetize_split; - rtp_set_ptime (id, 20, 1); - break; case VLC_CODEC_MPGA: - id->i_payload_type = 14; - id->psz_enc = "MPA"; - id->i_clock_rate = 90000; /* not 44100 */ id->pf_packetize = rtp_packetize_mpa; break; case VLC_CODEC_MPGV: - id->i_payload_type = 32; - id->psz_enc = "MPV"; id->pf_packetize = rtp_packetize_mpv; break; case VLC_CODEC_ADPCM_G726: switch( p_fmt->i_bitrate / 1000 ) { case 16: - id->psz_enc = "G726-16"; id->pf_packetize = rtp_packetize_g726_16; break; case 24: - id->psz_enc = "G726-24"; id->pf_packetize = rtp_packetize_g726_24; break; case 32: - id->psz_enc = "G726-32"; id->pf_packetize = rtp_packetize_g726_32; break; case 40: - id->psz_enc = "G726-40"; id->pf_packetize = rtp_packetize_g726_40; break; default: @@ -1177,148 +1187,33 @@ static sout_stream_id_t *Add( sout_stream_t *p_stream, es_format_t *p_fmt ) } break; case VLC_CODEC_A52: - id->psz_enc = "ac3"; id->pf_packetize = rtp_packetize_ac3; break; case VLC_CODEC_H263: - id->psz_enc = "H263-1998"; id->pf_packetize = rtp_packetize_h263; break; case VLC_CODEC_H264: - id->psz_enc = "H264"; id->pf_packetize = rtp_packetize_h264; - id->psz_fmtp = NULL; - - if( p_fmt->i_extra > 0 ) - { - uint8_t *p_buffer = p_fmt->p_extra; - int i_buffer = p_fmt->i_extra; - char *p_64_sps = NULL; - char *p_64_pps = NULL; - char hexa[6+1]; - - while( i_buffer > 4 && - p_buffer[0] == 0 && p_buffer[1] == 0 && - p_buffer[2] == 0 && p_buffer[3] == 1 ) - { - const int i_nal_type = p_buffer[4]&0x1f; - int i_offset; - int i_size = 0; - - msg_Dbg( p_stream, "we found a startcode for NAL with TYPE:%d", i_nal_type ); - - i_size = i_buffer; - for( i_offset = 4; i_offset+3 < i_buffer ; i_offset++) - { - if( !memcmp (p_buffer + i_offset, "\x00\x00\x00\x01", 4 ) ) - { - /* we found another startcode */ - i_size = i_offset; - break; - } - } - if( i_nal_type == 7 ) - { - p_64_sps = vlc_b64_encode_binary( &p_buffer[4], i_size - 4 ); - sprintf_hexa( hexa, &p_buffer[5], 3 ); - } - else if( i_nal_type == 8 ) - { - p_64_pps = vlc_b64_encode_binary( &p_buffer[4], i_size - 4 ); - } - i_buffer -= i_size; - p_buffer += i_size; - } - /* */ - if( p_64_sps && p_64_pps && - ( asprintf( &id->psz_fmtp, - "packetization-mode=1;profile-level-id=%s;" - "sprop-parameter-sets=%s,%s;", hexa, p_64_sps, - p_64_pps ) == -1 ) ) - id->psz_fmtp = NULL; - free( p_64_sps ); - free( p_64_pps ); - } - if( !id->psz_fmtp ) - id->psz_fmtp = strdup( "packetization-mode=1" ); break; - case VLC_CODEC_MP4V: - { - id->psz_enc = "MP4V-ES"; id->pf_packetize = rtp_packetize_split; - if( p_fmt->i_extra > 0 ) - { - char hexa[2*p_fmt->i_extra +1]; - sprintf_hexa( hexa, p_fmt->p_extra, p_fmt->i_extra ); - if( asprintf( &id->psz_fmtp, - "profile-level-id=3; config=%s;", hexa ) == -1 ) - id->psz_fmtp = NULL; - } break; - } case VLC_CODEC_MP4A: { if(!p_sys->b_latm) - { - char hexa[2*p_fmt->i_extra +1]; - - id->psz_enc = "mpeg4-generic"; id->pf_packetize = rtp_packetize_mp4a; - sprintf_hexa( hexa, p_fmt->p_extra, p_fmt->i_extra ); - if( asprintf( &id->psz_fmtp, - "streamtype=5; profile-level-id=15; " - "mode=AAC-hbr; config=%s; SizeLength=13; " - "IndexLength=3; IndexDeltaLength=3; Profile=1;", - hexa ) == -1 ) - id->psz_fmtp = NULL; - } else - { - char hexa[13]; - int i; - unsigned char config[6]; - unsigned int aacsrates[15] = { - 96000, 88200, 64000, 48000, 44100, 32000, 24000, 22050, - 16000, 12000, 11025, 8000, 7350, 0, 0 }; - - for( i = 0; i < 15; i++ ) - if( p_fmt->audio.i_rate == aacsrates[i] ) - break; - - config[0]=0x40; - config[1]=0; - config[2]=0x20|i; - config[3]=p_fmt->audio.i_channels<<4; - config[4]=0x3f; - config[5]=0xc0; - - id->psz_enc = "MP4A-LATM"; id->pf_packetize = rtp_packetize_mp4a_latm; - sprintf_hexa( hexa, config, 6 ); - if( asprintf( &id->psz_fmtp, "profile-level-id=15; " - "object=2; cpresent=0; config=%s", hexa ) == -1 ) - id->psz_fmtp = NULL; - } break; } case VLC_CODEC_AMR_NB: - id->psz_enc = "AMR"; - id->psz_fmtp = strdup( "octet-align=1" ); - id->pf_packetize = rtp_packetize_amr; - break; case VLC_CODEC_AMR_WB: - id->psz_enc = "AMR-WB"; - id->psz_fmtp = strdup( "octet-align=1" ); id->pf_packetize = rtp_packetize_amr; break; case VLC_CODEC_SPEEX: - id->psz_enc = "SPEEX"; id->pf_packetize = rtp_packetize_spx; break; case VLC_CODEC_ITU_T140: - id->psz_enc = "t140" ; - id->i_clock_rate = 1000; id->pf_packetize = rtp_packetize_t140; break; @@ -1327,9 +1222,6 @@ static sout_stream_id_t *Add( sout_stream_t *p_stream, es_format_t *p_fmt ) "codec: %4.4s)", (char*)&p_fmt->i_codec ); goto error; } - if (id->i_payload_type >= 96) - /* Mark dynamic payload type in use */ - p_sys->payload_bitmap &= ~(1 << (127 - id->i_payload_type)); #if 0 /* No payload formats sets this at the moment */ int cscov = -1; @@ -1343,11 +1235,13 @@ static sout_stream_id_t *Add( sout_stream_t *p_stream, es_format_t *p_fmt ) id->b_ts_init = ( p_sys->i_npt_zero != VLC_TS_INVALID ); vlc_mutex_unlock( &p_sys->lock_ts ); if( id->b_ts_init ) - id->i_ts_offset = rtp_compute_ts( id, p_sys->i_pts_offset ); + id->i_ts_offset = rtp_compute_ts( id->rtp_fmt.clock_rate, + p_sys->i_pts_offset ); if( p_sys->rtsp != NULL ) id->rtsp_id = RtspAddId( p_sys->rtsp, id, GetDWBE( id->ssrc ), + id->rtp_fmt.clock_rate, p_sys->psz_destination, p_sys->i_ttl, id->i_port, id->i_port + 1 ); @@ -1402,11 +1296,13 @@ static int Del( sout_stream_t *p_stream, sout_stream_id_t *id ) } /* Release dynamic payload type */ - if (id->i_payload_type >= 96) - p_sys->payload_bitmap |= 1 << (127 - id->i_payload_type); + if (id->rtp_fmt.payload_type >= 96) + p_sys->payload_bitmap |= 1 << (127 - id->rtp_fmt.payload_type); - free( id->psz_fmtp ); + free( id->rtp_fmt.fmtp ); + if (p_sys->p_vod_media != NULL) + vod_detach_id(p_sys->p_vod_media, p_sys->psz_vod_session, id); if( id->rtsp_id ) RtspDelId( p_sys->rtsp, id->rtsp_id ); if( id->listen.fd != NULL ) @@ -1753,6 +1649,11 @@ int64_t rtp_get_ts( const sout_stream_t *p_stream ) return p_sys->i_pts_zero + (now - i_npt_zero); } +sout_stream_t *rtp_get_pstream( const sout_stream_id_t *id ) +{ + return id->p_stream; +} + void rtp_packetize_common( sout_stream_id_t *id, block_t *out, int b_marker, int64_t i_pts ) { @@ -1772,14 +1673,16 @@ void rtp_packetize_common( sout_stream_id_t *id, block_t *out, /* And in any case this is the first packet of this ES, so we * initialize the offset for this ES. */ - id->i_ts_offset = rtp_compute_ts( id, p_sys->i_pts_offset ); + id->i_ts_offset = rtp_compute_ts( id->rtp_fmt.clock_rate, + p_sys->i_pts_offset ); id->b_ts_init = true; } - uint32_t i_timestamp = rtp_compute_ts( id, i_pts ) + id->i_ts_offset; + uint32_t i_timestamp = rtp_compute_ts( id->rtp_fmt.clock_rate, i_pts ) + + id->i_ts_offset; out->p_buffer[0] = 0x80; - out->p_buffer[1] = (b_marker?0x80:0x00)|id->i_payload_type; + out->p_buffer[1] = (b_marker?0x80:0x00)|id->rtp_fmt.payload_type; out->p_buffer[2] = ( id->i_sequence >> 8)&0xff; out->p_buffer[3] = ( id->i_sequence )&0xff; out->p_buffer[4] = ( i_timestamp >> 24 )&0xff; diff --git a/modules/stream_out/rtp.h b/modules/stream_out/rtp.h index 01e7288..00c39d2 100644 --- a/modules/stream_out/rtp.h +++ b/modules/stream_out/rtp.h @@ -25,24 +25,34 @@ typedef struct rtsp_stream_t rtsp_stream_t; typedef struct rtsp_stream_id_t rtsp_stream_id_t; -rtsp_stream_t *RtspSetup( sout_stream_t *p_stream, const vlc_url_t *url ); +rtsp_stream_t *RtspSetup( vlc_object_t *owner, vod_media_t *media, + const vlc_url_t *url ); void RtspUnsetup( rtsp_stream_t *rtsp ); rtsp_stream_id_t *RtspAddId( rtsp_stream_t *rtsp, sout_stream_id_t *sid, - uint32_t ssrc, + uint32_t ssrc, unsigned clock_rate, const char *dst, int ttl, unsigned loport, unsigned hiport ); void RtspDelId( rtsp_stream_t *rtsp, rtsp_stream_id_t * ); char *RtspAppendTrackPath( rtsp_stream_id_t *id, const char *base ); +int RtspClientLookup( rtsp_stream_t *rtsp, const char *name, int64_t *ts_init ); +int RtspTrackAttach( rtsp_stream_t *rtsp, const char *name, + rtsp_stream_id_t *id, sout_stream_id_t *sout_id, + uint32_t *ssrc, uint16_t *seq_init ); +void RtspTrackDetach( rtsp_stream_t *rtsp, const char *name, + sout_stream_id_t *sout_id); + char *SDPGenerate( sout_stream_t *p_stream, const char *rtsp_url ); +char *SDPGenerateVoD( const vod_media_t *p_media, const char *rtsp_url ); -uint32_t rtp_compute_ts( const sout_stream_id_t *id, int64_t i_pts ); +uint32_t rtp_compute_ts( unsigned i_clock_rate, int64_t i_pts ); int rtp_add_sink( sout_stream_id_t *id, int fd, bool rtcp_mux, uint16_t *seq ); void rtp_del_sink( sout_stream_id_t *id, int fd ); uint16_t rtp_get_seq( sout_stream_id_t *id ); int64_t rtp_get_ts( const sout_stream_t *p_stream ); +sout_stream_t *rtp_get_pstream( const sout_stream_id_t *id ); /* RTP packetization */ void rtp_packetize_common (sout_stream_id_t *id, block_t *out, @@ -73,3 +83,37 @@ rtcp_sender_t *OpenRTCP (vlc_object_t *obj, int rtp_fd, int proto, bool mux); void CloseRTCP (rtcp_sender_t *rtcp); void SendRTCP (rtcp_sender_t *restrict rtcp, const block_t *rtp); + +typedef struct rtp_format_t +{ + /* Used for SDP and packetization */ + uint8_t payload_type; + unsigned clock_rate; + unsigned channels; + int cat; + /* Used in SDP only */ + unsigned bitrate; + const char *ptname; + char *fmtp; +} rtp_format_t; + +void rtp_get_fmt( vlc_object_t *obj, es_format_t *p_fmt, const char *mux, + rtp_format_t *p_rtp_fmt ); + +/* VoD */ +int OpenVoD ( vlc_object_t * ); +void CloseVoD( vlc_object_t * ); + +int vod_start(vod_media_t *p_media, const char *psz_session); +void vod_toggle_pause(vod_media_t *p_media, const char *psz_session); +void vod_stop(vod_media_t *p_media, const char *psz_session); +void vod_seek(vod_media_t *p_media, const char *psz_session, float time); + +vod_media_t *vod_get_session(sout_stream_t *p_stream, const char *psz_session, + const char **mux, int64_t *i_ts_init); +int vod_init_id(vod_media_t *p_media, const char *psz_session, int es_id, + sout_stream_id_t *sout_id, rtp_format_t *rtp_fmt, + uint32_t *ssrc, uint16_t *seq_init); +void vod_detach_id(vod_media_t *p_media, const char *psz_session, + sout_stream_id_t *sout_id); + diff --git a/modules/stream_out/rtpfmt.c b/modules/stream_out/rtpfmt.c index 482db7d..001bebd 100644 --- a/modules/stream_out/rtpfmt.c +++ b/modules/stream_out/rtpfmt.c @@ -29,9 +29,256 @@ #include #include #include +#include #include "rtp.h" +#include + +static void sprintf_hexa( char *s, uint8_t *p_data, int i_data ) +{ + static const char hex[16] = "0123456789abcdef"; + + for( int i = 0; i < i_data; i++ ) + { + s[2*i+0] = hex[(p_data[i]>>4)&0xf]; + s[2*i+1] = hex[(p_data[i] )&0xf]; + } + s[2*i_data] = '\0'; +} + +void rtp_get_fmt( vlc_object_t *obj, es_format_t *p_fmt, const char *mux, + rtp_format_t *rtp_fmt ) +{ + assert( p_fmt != NULL || mux != NULL ); + + rtp_fmt->payload_type = 96; /* dynamic payload type */ + rtp_fmt->ptname = NULL; + rtp_fmt->cat = mux != NULL ? VIDEO_ES : p_fmt->i_cat; + if( rtp_fmt->cat == AUDIO_ES ) + { + rtp_fmt->clock_rate = p_fmt->audio.i_rate; + rtp_fmt->channels = p_fmt->audio.i_channels; + } + else + rtp_fmt->clock_rate = 90000; /* most common case for video */ + /* Stream bitrate in kbps */ + rtp_fmt->bitrate = p_fmt != NULL ? p_fmt->i_bitrate/1000 : 0; + rtp_fmt->fmtp = NULL; + + if( mux != NULL ) + { + if( strncmp( mux, "ts", 2 ) == 0 ) + { + rtp_fmt->payload_type = 33; + rtp_fmt->ptname = "MP2T"; + } + else + rtp_fmt->ptname = "MP2P"; + return; + } + + switch( p_fmt->i_codec ) + { + case VLC_CODEC_MULAW: + if( p_fmt->audio.i_channels == 1 && p_fmt->audio.i_rate == 8000 ) + rtp_fmt->payload_type = 0; + rtp_fmt->ptname = "PCMU"; + break; + case VLC_CODEC_ALAW: + if( p_fmt->audio.i_channels == 1 && p_fmt->audio.i_rate == 8000 ) + rtp_fmt->payload_type = 8; + rtp_fmt->ptname = "PCMA"; + break; + case VLC_CODEC_S16B: + case VLC_CODEC_S16L: + if( p_fmt->audio.i_channels == 1 && p_fmt->audio.i_rate == 44100 ) + { + rtp_fmt->payload_type = 11; + } + else if( p_fmt->audio.i_channels == 2 && + p_fmt->audio.i_rate == 44100 ) + { + rtp_fmt->payload_type = 10; + } + rtp_fmt->ptname = "L16"; + break; + case VLC_CODEC_U8: + rtp_fmt->ptname = "L8"; + break; + case VLC_CODEC_MPGA: + rtp_fmt->payload_type = 14; + rtp_fmt->ptname = "MPA"; + rtp_fmt->clock_rate = 90000; /* not 44100 */ + break; + case VLC_CODEC_MPGV: + rtp_fmt->payload_type = 32; + rtp_fmt->ptname = "MPV"; + break; + case VLC_CODEC_ADPCM_G726: + switch( p_fmt->i_bitrate / 1000 ) + { + case 16: + rtp_fmt->ptname = "G726-16"; + break; + case 24: + rtp_fmt->ptname = "G726-24"; + break; + case 32: + rtp_fmt->ptname = "G726-32"; + break; + case 40: + rtp_fmt->ptname = "G726-40"; + break; + default: + msg_Err( obj, "cannot add this stream (unsupported " + "G.726 bit rate: %u)", p_fmt->i_bitrate ); + return; + } + break; + case VLC_CODEC_A52: + rtp_fmt->ptname = "ac3"; + break; + case VLC_CODEC_H263: + rtp_fmt->ptname = "H263-1998"; + break; + case VLC_CODEC_H264: + rtp_fmt->ptname = "H264"; + rtp_fmt->fmtp = NULL; + + if( p_fmt->i_extra > 0 ) + { + uint8_t *p_buffer = p_fmt->p_extra; + int i_buffer = p_fmt->i_extra; + char *p_64_sps = NULL; + char *p_64_pps = NULL; + char hexa[6+1]; + + while( i_buffer > 4 && + p_buffer[0] == 0 && p_buffer[1] == 0 && + p_buffer[2] == 0 && p_buffer[3] == 1 ) + { + const int i_nal_type = p_buffer[4]&0x1f; + int i_offset; + int i_size = 0; + + msg_Dbg( obj, "we found a startcode for NAL with TYPE:%d", i_nal_type ); + + i_size = i_buffer; + for( i_offset = 4; i_offset+3 < i_buffer ; i_offset++) + { + if( !memcmp (p_buffer + i_offset, "\x00\x00\x00\x01", 4 ) ) + { + /* we found another startcode */ + i_size = i_offset; + break; + } + } + if( i_nal_type == 7 ) + { + p_64_sps = vlc_b64_encode_binary( &p_buffer[4], i_size - 4 ); + sprintf_hexa( hexa, &p_buffer[5], 3 ); + } + else if( i_nal_type == 8 ) + { + p_64_pps = vlc_b64_encode_binary( &p_buffer[4], i_size - 4 ); + } + i_buffer -= i_size; + p_buffer += i_size; + } + /* */ + if( p_64_sps && p_64_pps && + ( asprintf( &rtp_fmt->fmtp, + "packetization-mode=1;profile-level-id=%s;" + "sprop-parameter-sets=%s,%s;", hexa, p_64_sps, + p_64_pps ) == -1 ) ) + rtp_fmt->fmtp = NULL; + free( p_64_sps ); + free( p_64_pps ); + } + if( rtp_fmt->fmtp == NULL ) + rtp_fmt->fmtp = strdup( "packetization-mode=1" ); + break; + + case VLC_CODEC_MP4V: + { + rtp_fmt->ptname = "MP4V-ES"; + if( p_fmt->i_extra > 0 ) + { + char hexa[2*p_fmt->i_extra +1]; + sprintf_hexa( hexa, p_fmt->p_extra, p_fmt->i_extra ); + if( asprintf( &rtp_fmt->fmtp, + "profile-level-id=3; config=%s;", hexa ) == -1 ) + rtp_fmt->fmtp = NULL; + } + break; + } + case VLC_CODEC_MP4A: + { + if( ! var_InheritBool( obj, "sout-rtp-mp4a-latm" ) ) + { + char hexa[2*p_fmt->i_extra +1]; + + rtp_fmt->ptname = "mpeg4-generic"; + sprintf_hexa( hexa, p_fmt->p_extra, p_fmt->i_extra ); + if( asprintf( &rtp_fmt->fmtp, + "streamtype=5; profile-level-id=15; " + "mode=AAC-hbr; config=%s; SizeLength=13; " + "IndexLength=3; IndexDeltaLength=3; Profile=1;", + hexa ) == -1 ) + rtp_fmt->fmtp = NULL; + } + else + { + char hexa[13]; + int i; + unsigned char config[6]; + unsigned int aacsrates[15] = { + 96000, 88200, 64000, 48000, 44100, 32000, 24000, 22050, + 16000, 12000, 11025, 8000, 7350, 0, 0 }; + + for( i = 0; i < 15; i++ ) + if( p_fmt->audio.i_rate == aacsrates[i] ) + break; + + config[0]=0x40; + config[1]=0; + config[2]=0x20|i; + config[3]=p_fmt->audio.i_channels<<4; + config[4]=0x3f; + config[5]=0xc0; + + rtp_fmt->ptname = "MP4A-LATM"; + sprintf_hexa( hexa, config, 6 ); + if( asprintf( &rtp_fmt->fmtp, "profile-level-id=15; " + "object=2; cpresent=0; config=%s", hexa ) == -1 ) + rtp_fmt->fmtp = NULL; + } + break; + } + case VLC_CODEC_AMR_NB: + rtp_fmt->ptname = "AMR"; + rtp_fmt->fmtp = strdup( "octet-align=1" ); + break; + case VLC_CODEC_AMR_WB: + rtp_fmt->ptname = "AMR-WB"; + rtp_fmt->fmtp = strdup( "octet-align=1" ); + break; + case VLC_CODEC_SPEEX: + rtp_fmt->ptname = "SPEEX"; + break; + case VLC_CODEC_ITU_T140: + rtp_fmt->ptname = "t140" ; + rtp_fmt->clock_rate = 1000; + break; + + default: + msg_Err( obj, "cannot add this stream (unsupported " + "codec: %4.4s)", (char*)&p_fmt->i_codec ); + } +} + + int rtp_packetize_h264_nal( sout_stream_id_t *id, const uint8_t *p_data, int i_data, int64_t i_pts, diff --git a/modules/stream_out/rtsp.c b/modules/stream_out/rtsp.c index a1cc953..fc57def 100644 --- a/modules/stream_out/rtsp.c +++ b/modules/stream_out/rtsp.c @@ -1,12 +1,13 @@ /***************************************************************************** * rtsp.c: RTSP support for RTP stream output module ***************************************************************************** - * Copyright (C) 2003-2004 the VideoLAN team + * Copyright (C) 2003-2004, 2010 the VideoLAN team * Copyright ? 2007 R?mi Denis-Courmont * * $Id$ * * Authors: Laurent Aimar + * Pierre Ynard * * 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 @@ -35,12 +36,21 @@ #include #include +#include +#include #include #include #include #include #include +#ifndef WIN32 +# include +#endif +#ifdef HAVE_XLOCALE_H +# include +#endif + #include "rtp.h" typedef struct rtsp_session_t rtsp_session_t; @@ -48,7 +58,8 @@ typedef struct rtsp_session_t rtsp_session_t; struct rtsp_stream_t { vlc_mutex_t lock; - sout_stream_t *owner; + vlc_object_t *owner; + vod_media_t *vod_media; httpd_host_t *host; httpd_url_t *url; char *psz_path; @@ -68,7 +79,8 @@ static int RtspCallbackId( httpd_callback_sys_t *p_args, const httpd_message_t *query ); static void RtspClientDel( rtsp_stream_t *rtsp, rtsp_session_t *session ); -rtsp_stream_t *RtspSetup( sout_stream_t *p_stream, const vlc_url_t *url ) +rtsp_stream_t *RtspSetup( vlc_object_t *owner, vod_media_t *media, + const vlc_url_t *url ) { rtsp_stream_t *rtsp = malloc( sizeof( *rtsp ) ); @@ -78,7 +90,8 @@ rtsp_stream_t *RtspSetup( sout_stream_t *p_stream, const vlc_url_t *url ) return NULL; } - rtsp->owner = p_stream; + rtsp->owner = owner; + rtsp->vod_media = media; rtsp->sessionc = 0; rtsp->sessionv = NULL; rtsp->host = NULL; @@ -92,10 +105,10 @@ rtsp_stream_t *RtspSetup( sout_stream_t *p_stream, const vlc_url_t *url ) if( rtsp->psz_path == NULL ) goto error; - msg_Dbg( p_stream, "RTSP stream: host %s port %d at %s", + msg_Dbg( owner, "RTSP stream: host %s port %d at %s", url->psz_host, rtsp->port, rtsp->psz_path ); - rtsp->host = httpd_HostNew( VLC_OBJECT(p_stream), url->psz_host, + rtsp->host = httpd_HostNew( VLC_OBJECT(owner), url->psz_host, rtsp->port ); if( rtsp->host == NULL ) goto error; @@ -142,6 +155,7 @@ struct rtsp_stream_id_t { rtsp_stream_t *stream; sout_stream_id_t *sout_id; + unsigned clock_rate; /* needed to compute rtptime in RTP-Info */ httpd_url_t *url; const char *dst; int ttl; @@ -158,6 +172,9 @@ struct rtsp_session_t { rtsp_stream_t *stream; uint64_t id; + int64_t ts_init; + bool vod_started; /* true if the VoD media instance was created */ + bool paused; /* true if the client paused the VoD instance */ /* output (id-access) */ int trackc; @@ -169,10 +186,15 @@ struct rtsp_session_t struct rtsp_strack_t { rtsp_stream_id_t *id; - int fd; + sout_stream_id_t *sout_id; + int setup_fd; /* socket created by the SETUP request */ + int rtp_fd; /* socket used by the RTP output */ + uint32_t ssrc; + uint16_t seq_init; bool playing; }; +static void RtspTrackClose( rtsp_strack_t *tr ); char *RtspAppendTrackPath( rtsp_stream_id_t *id, const char *base ) { @@ -187,7 +209,7 @@ char *RtspAppendTrackPath( rtsp_stream_id_t *id, const char *base ) rtsp_stream_id_t *RtspAddId( rtsp_stream_t *rtsp, sout_stream_id_t *sid, - uint32_t ssrc, + uint32_t ssrc, unsigned clock_rate, /* Multicast stuff - TODO: cleanup */ const char *dst, int ttl, unsigned loport, unsigned hiport ) @@ -203,6 +225,7 @@ rtsp_stream_id_t *RtspAddId( rtsp_stream_t *rtsp, sout_stream_id_t *sid, id->sout_id = sid; id->track_id = rtsp->track_id; id->ssrc = ssrc; + id->clock_rate = clock_rate; /* TODO: can we assume that this need not be strdup'd? */ id->dst = dst; if( id->dst != NULL ) @@ -256,7 +279,7 @@ void RtspDelId( rtsp_stream_t *rtsp, rtsp_stream_id_t *id ) if( ses->trackv[j].id == id ) { rtsp_strack_t *tr = ses->trackv + j; - rtp_del_sink( tr->id->sout_id, tr->fd ); + RtspTrackClose( tr ); REMOVE_ELEM( ses->trackv, ses->trackc, j ); } } @@ -277,6 +300,9 @@ rtsp_session_t *RtspClientNew( rtsp_stream_t *rtsp ) s->stream = rtsp; vlc_rand_bytes (&s->id, sizeof (s->id)); + s->ts_init = mdate(); /* arbitrary value, could probably be random */ + s->vod_started = false; + s->paused = false; s->trackc = 0; s->trackv = NULL; @@ -320,12 +346,126 @@ void RtspClientDel( rtsp_stream_t *rtsp, rtsp_session_t *session ) TAB_REMOVE( rtsp->sessionc, rtsp->sessionv, session ); for( i = 0; i < session->trackc; i++ ) - rtp_del_sink( session->trackv[i].id->sout_id, session->trackv[i].fd ); + RtspTrackClose( &session->trackv[i] ); free( session->trackv ); free( session ); } +/* Look up whether a given session exists for this stream, and if so, + * reports the timestamp information used */ +int RtspClientLookup( rtsp_stream_t *rtsp, const char *name, int64_t *ts_init ) +{ + rtsp_session_t *session; + + vlc_mutex_lock(&rtsp->lock); + session = RtspClientGet(rtsp, name); + if (session != NULL) + *ts_init = session->ts_init; + vlc_mutex_unlock(&rtsp->lock); + + return session != NULL ? VLC_SUCCESS : VLC_EGENERIC; +} + +/* Attach a starting VoD RTP id to its RTSP track, and let it + * initialize with the parameters of the SETUP request */ +int RtspTrackAttach( rtsp_stream_t *rtsp, const char *name, + rtsp_stream_id_t *id, sout_stream_id_t *sout_id, + uint32_t *ssrc, uint16_t *seq_init ) +{ + int val = VLC_EGENERIC; + rtsp_session_t *session; + + vlc_mutex_lock(&rtsp->lock); + session = RtspClientGet(rtsp, name); + + if (session == NULL) + goto out; + + for (int i = 0; session->trackc; i++) + { + rtsp_strack_t *tr = session->trackv + i; + if (tr->id == id) + { + int rtp_fd; +#if !defined(WIN32) || defined(UNDER_CE) + rtp_fd = vlc_dup(tr->setup_fd); +#else + WSAPROTOCOL_INFO info; + WSADuplicateSocket (tr->setup_fd, GetCurrentProcessId (), &info); + rtp_fd = WSASocket (info.iAddressFamily, info.iSocketType, + info.iProtocol, &info, 0, 0); +#endif + if (rtp_fd == -1) + break; + + /* Ignore any unexpected incoming packet */ + /* XXX: is this needed again? */ + setsockopt (rtp_fd, SOL_SOCKET, SO_RCVBUF, &(int){ 0 }, + sizeof (int)); + + uint16_t seq; + *ssrc = ntohl(tr->ssrc); + *seq_init = tr->seq_init; + rtp_add_sink(sout_id, rtp_fd, false, &seq); + /* To avoid race conditions, sout_id->i_seq_sent_next must + * be set here and now. Make sure the caller did its job + * properly when passing seq_init. */ + assert(tr->seq_init == seq); + + tr->rtp_fd = rtp_fd; + tr->sout_id = sout_id; + tr->playing = true; + + val = VLC_SUCCESS; + break; + } + } + +out: + vlc_mutex_unlock(&rtsp->lock); + return val; +} + +/* Remove references to the RTP id when it is stopped */ +void RtspTrackDetach( rtsp_stream_t *rtsp, const char *name, + sout_stream_id_t *sout_id ) +{ + rtsp_session_t *session; + + vlc_mutex_lock(&rtsp->lock); + session = RtspClientGet(rtsp, name); + + if (session == NULL) + goto out; + + for (int i = 0; session->trackc; i++) + { + rtsp_strack_t *tr = session->trackv + i; + if (tr->sout_id == sout_id) + { + tr->sout_id = NULL; + tr->playing = false; + rtp_del_sink(sout_id, tr->rtp_fd); + break; + } + } + +out: + vlc_mutex_unlock(&rtsp->lock); +} + + +/** rtsp must be locked */ +static void RtspTrackClose( rtsp_strack_t *tr ) +{ + if (tr->sout_id != NULL) + rtp_del_sink(tr->sout_id, tr->rtp_fd); + /* rtp_fd is duplicated from setup_fd only in VoD mode. */ + if (tr->id->stream->vod_media != NULL) + net_Close(tr->setup_fd); +} + /** Finds the next transport choice */ static inline const char *transport_next( const char *str ) @@ -353,6 +493,28 @@ static inline const char *parameter_next( const char *str ) } +static float ParseNPT (const char *str) +{ + locale_t loc = newlocale (LC_NUMERIC_MASK, "C", NULL); + locale_t oldloc = uselocale (loc); + unsigned hour, min; + float sec; + + if (sscanf (str, "%u:%u:%f", &hour, &min, &sec) == 3) + sec += ((hour * 60) + min) * 60; + else + if (sscanf (str, "%f", &sec) != 1) + sec = 0.; + + if (loc != (locale_t)0) + { + uselocale (oldloc); + freelocale (loc); + } + return sec; +} + + /** RTSP requests handler * @param id selected track for non-aggregate URLs, * NULL for aggregate URLs @@ -362,11 +524,12 @@ static int RtspHandler( rtsp_stream_t *rtsp, rtsp_stream_id_t *id, httpd_message_t *answer, const httpd_message_t *query ) { - sout_stream_t *p_stream = rtsp->owner; + vlc_object_t *p_owner = rtsp->owner; char psz_sesbuf[17]; const char *psz_session = NULL, *psz; char control[sizeof("rtsp://[]:12345") + NI_MAXNUMERICHOST + strlen( rtsp->psz_path )]; + bool vod = rtsp->vod_media != NULL; time_t now; time (&now); @@ -439,7 +602,10 @@ static int RtspHandler( rtsp_stream_t *rtsp, rtsp_stream_id_t *id, answer->i_status = 200; httpd_MsgAdd( answer, "Content-Type", "%s", "application/sdp" ); httpd_MsgAdd( answer, "Content-Base", "%s", control ); - answer->p_body = (uint8_t *)SDPGenerate( rtsp->owner, control ); + + answer->p_body = (uint8_t *) ( vod ? + SDPGenerateVoD( rtsp->vod_media, control ) : + SDPGenerate( (sout_stream_t *)rtsp->owner, control ) ); if( answer->p_body != NULL ) answer->i_body = strlen( (char *)answer->p_body ); else @@ -554,8 +720,8 @@ static int RtspHandler( rtsp_stream_t *rtsp, rtsp_stream_id_t *id, { char ip[NI_MAXNUMERICHOST], src[NI_MAXNUMERICHOST]; rtsp_session_t *ses = NULL; - rtsp_strack_t track = { id, -1, false }; - int sport; + int fd, sport; + uint32_t ssrc; if( httpd_ClientIP( cl, ip ) == NULL ) { @@ -563,11 +729,11 @@ static int RtspHandler( rtsp_stream_t *rtsp, rtsp_stream_id_t *id, continue; } - track.fd = net_ConnectDgram( p_stream, ip, loport, -1, - IPPROTO_UDP ); - if( track.fd == -1 ) + fd = net_ConnectDgram( p_owner, ip, loport, -1, + IPPROTO_UDP ); + if( fd == -1 ) { - msg_Err( p_stream, + msg_Err( p_owner, "cannot create RTP socket for %s port %u", ip, loport ); answer->i_status = 500; @@ -575,9 +741,24 @@ static int RtspHandler( rtsp_stream_t *rtsp, rtsp_stream_id_t *id, } /* Ignore any unexpected incoming packet */ - setsockopt (track.fd, SOL_SOCKET, SO_RCVBUF, &(int){ 0 }, + setsockopt (fd, SOL_SOCKET, SO_RCVBUF, &(int){ 0 }, sizeof (int)); - net_GetSockAddress( track.fd, src, &sport ); + net_GetSockAddress( fd, src, &sport ); + + rtsp_strack_t track = { .id = id, .sout_id = id->sout_id, + .setup_fd = fd, .playing = false }; + + if (vod) + { + vlc_rand_bytes (&track.seq_init, sizeof (track.seq_init)); + vlc_rand_bytes (&track.ssrc, sizeof (track.ssrc)); + ssrc = track.ssrc; + } + else + { + track.rtp_fd = track.setup_fd; + ssrc = id->ssrc; + } vlc_mutex_lock( &rtsp->lock ); if( psz_session == NULL ) @@ -618,7 +799,7 @@ static int RtspHandler( rtsp_stream_t *rtsp, rtsp_stream_id_t *id, "client_port=%u-%u;server_port=%u-%u;" "ssrc=%08X;mode=play", src, loport, loport + 1, sport, - sport + 1, id->ssrc ); + sport + 1, ssrc ); } else { @@ -627,7 +808,7 @@ static int RtspHandler( rtsp_stream_t *rtsp, rtsp_stream_id_t *id, "client_port=%u-%u;server_port=%u-%u;" "ssrc=%08X;mode=play", loport, loport + 1, sport, sport + 1, - id->ssrc ); + ssrc ); } answer->i_status = 200; @@ -643,7 +824,7 @@ static int RtspHandler( rtsp_stream_t *rtsp, rtsp_stream_id_t *id, psz_session = httpd_MsgGet( query, "Session" ); const char *range = httpd_MsgGet (query, "Range"); - if (range && strncmp (range, "npt=", 4)) + if (range != NULL && strncmp (range, "npt=", 4)) { answer->i_status = 501; break; @@ -660,7 +841,26 @@ static int RtspHandler( rtsp_stream_t *rtsp, rtsp_stream_id_t *id, + sizeof("url=/trackID=123;seq=65535;" "rtptime=4294967295, ") ) + 1]; size_t infolen = 0; - int64_t ts = rtp_get_ts( rtsp->owner ); + int64_t ts; + if (vod) + { + /* We don't keep a reference to the sout_stream_t, + * so we look for a sout_id to go through. */ + ts = ses->ts_init; + for (int i = 0; i < ses->trackc; i++) + { + rtsp_strack_t *tr = ses->trackv + i; + if (tr->sout_id != NULL) + { + sout_stream_t *p_stream = + rtp_get_pstream(tr->sout_id); + ts = rtp_get_ts(p_stream); + break; + } + } + } + else + ts = rtp_get_ts( (sout_stream_t *)rtsp->owner ); for( int i = 0; i < ses->trackc; i++ ) { @@ -670,17 +870,29 @@ static int RtspHandler( rtsp_stream_t *rtsp, rtsp_stream_id_t *id, uint16_t seq; if( !tr->playing ) { - tr->playing = true; - rtp_add_sink( tr->id->sout_id, tr->fd, false, - &seq ); + if (vod) + /* TODO: if the RTP stream output is already + * started, it won't pick up newly set-up + * tracks, so we need to call rtp_add_sink() + * or something. */ + seq = tr->seq_init; + else + { + tr->playing = true; + rtp_add_sink( tr->sout_id, tr->rtp_fd, + false, &seq ); + } } else - seq = rtp_get_seq( tr->id->sout_id ); + { + assert( tr->sout_id != NULL ); + seq = rtp_get_seq( tr->sout_id ); + } char *url = RtspAppendTrackPath( tr->id, control ); infolen += sprintf( info + infolen, "url=%s;seq=%u;rtptime=%u, ", url != NULL ? url : "", seq, - rtp_compute_ts( tr->id->sout_id, ts ) ); + rtp_compute_ts( tr->id->clock_rate, ts ) ); free( url ); } } @@ -689,6 +901,31 @@ static int RtspHandler( rtsp_stream_t *rtsp, rtsp_stream_id_t *id, info[infolen - 2] = '\0'; /* remove trailing ", " */ httpd_MsgAdd( answer, "RTP-Info", "%s", info ); } + if (vod) + { + /* TODO: fix that crap, this is barely RTSP */ + if (!ses->vod_started) + { + if (vod_start(rtsp->vod_media, psz_session) + != VLC_SUCCESS) + answer->i_status = 500; + else + ses->vod_started = true; + } + else + { + if (range != NULL) + { + float time = ParseNPT (range + 4); + vod_seek(rtsp->vod_media, psz_session, time); + } + if (ses->paused) + { + vod_toggle_pause(rtsp->vod_media, psz_session); + ses->paused = false; + } + } + } } vlc_mutex_unlock( &rtsp->lock ); @@ -698,11 +935,29 @@ static int RtspHandler( rtsp_stream_t *rtsp, rtsp_stream_id_t *id, } case HTTPD_MSG_PAUSE: - answer->i_status = 405; - httpd_MsgAdd( answer, "Allow", - "%s, TEARDOWN, PLAY, GET_PARAMETER", - ( id != NULL ) ? "SETUP" : "DESCRIBE" ); + { + if (!vod) + { + answer->i_status = 405; + httpd_MsgAdd( answer, "Allow", + "%s, TEARDOWN, PLAY, GET_PARAMETER", + ( id != NULL ) ? "SETUP" : "DESCRIBE" ); + break; + } + + rtsp_session_t *ses; + answer->i_status = 200; + psz_session = httpd_MsgGet( query, "Session" ); + vlc_mutex_lock( &rtsp->lock ); + ses = RtspClientGet( rtsp, psz_session ); + if (ses != NULL && !ses->paused) + { + vod_toggle_pause(rtsp->vod_media, psz_session); + ses->paused = true; + } + vlc_mutex_unlock( &rtsp->lock ); break; + } case HTTPD_MSG_GETPARAMETER: if( query->i_body > 0 ) @@ -728,13 +983,17 @@ static int RtspHandler( rtsp_stream_t *rtsp, rtsp_stream_id_t *id, if( ses != NULL ) { if( id == NULL ) /* Delete the entire session */ + { RtspClientDel( rtsp, ses ); + if (vod) + vod_stop(rtsp->vod_media, psz_session); + } else /* Delete one track from the session */ for( int i = 0; i < ses->trackc; i++ ) { if( ses->trackv[i].id == id ) { - rtp_del_sink( id->sout_id, ses->trackv[i].fd ); + RtspTrackClose( &ses->trackv[i] ); REMOVE_ELEM( ses->trackv, ses->trackc, i ); } } diff --git a/modules/stream_out/vod.c b/modules/stream_out/vod.c new file mode 100644 index 0000000..35b757b --- /dev/null +++ b/modules/stream_out/vod.c @@ -0,0 +1,719 @@ +/***************************************************************************** + * vod.c: rtsp VoD server module + ***************************************************************************** + * Copyright (C) 2003-2006, 2010 the VideoLAN team + * $Id$ + * + * Authors: Laurent Aimar + * Gildas Bazin + * Pierre Ynard + * + * 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. + *****************************************************************************/ + +/***************************************************************************** + * Preamble + *****************************************************************************/ + +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif + +#include +#include +#include +#include +#include + +#include +#include +#include + +#include + +#include "rtp.h" + +/***************************************************************************** + * Exported prototypes + *****************************************************************************/ + +typedef struct media_es_t media_es_t; + +struct media_es_t +{ + int es_id; + rtp_format_t rtp_fmt; + rtsp_stream_id_t *rtsp_id; +}; + +struct vod_media_t +{ + int id; + + /* VoD server */ + vod_t *p_vod; + + /* RTSP server */ + rtsp_stream_t *rtsp; + + /* ES list */ + int i_es; + media_es_t **es; + const char *psz_mux; + + /* Infos */ + mtime_t i_length; +}; + +struct vod_sys_t +{ + char *psz_rtsp_url; + + /* List of media */ + vlc_mutex_t lock_media; + int i_media_id; + int i_media; + vod_media_t **media; + + /* */ + block_fifo_t *p_fifo_cmd; +}; + +/* rtsp delayed command (to avoid deadlock between vlm/httpd) */ +typedef enum +{ + RTSP_CMD_TYPE_NONE, /* Exit requested */ + + RTSP_CMD_TYPE_PLAY, + RTSP_CMD_TYPE_PAUSE, + RTSP_CMD_TYPE_STOP, + RTSP_CMD_TYPE_SEEK, +#if 0 + RTSP_CMD_TYPE_REWIND, + RTSP_CMD_TYPE_FORWARD, +#endif + + RTSP_CMD_TYPE_ADD, + RTSP_CMD_TYPE_DEL, +} rtsp_cmd_type_t; + +/* */ +typedef struct +{ + int i_type; + int i_media_id; + vod_media_t *p_media; + char *psz_session; + char *psz_arg; + double f_arg; +} rtsp_cmd_t; + +static vod_media_t *MediaNew( vod_t *, const char *, input_item_t * ); +static void MediaDel( vod_t *, vod_media_t * ); +static void MediaAskDel ( vod_t *, vod_media_t * ); + +static void* CommandThread( vlc_object_t *p_this ); +static void CommandPush( vod_t *, rtsp_cmd_type_t, vod_media_t *, const char *psz_session, + double f_arg, const char *psz_arg ); + +/***************************************************************************** + * Open: Starts the RTSP server module + *****************************************************************************/ +int OpenVoD( vlc_object_t *p_this ) +{ + vod_t *p_vod = (vod_t *)p_this; + vod_sys_t *p_sys = NULL; + char *psz_url; + + p_vod->p_sys = p_sys = malloc( sizeof( vod_sys_t ) ); + if( !p_sys ) goto error; + + psz_url = var_InheritString( p_vod, "rtsp-host" ); + + if( psz_url == NULL ) + p_sys->psz_rtsp_url = strdup( "/" ); + else + if( !( strlen( psz_url ) > 0 && psz_url[strlen( psz_url ) - 1] == '/' ) ) + { + if( asprintf( &p_sys->psz_rtsp_url, "%s/", psz_url ) == -1 ) + { + p_sys->psz_rtsp_url = NULL; + free( psz_url ); + goto error; + } + free( psz_url ); + } + else + p_sys->psz_rtsp_url = psz_url; + + vlc_mutex_init( &p_sys->lock_media ); + + TAB_INIT( p_sys->i_media, p_sys->media ); + p_sys->i_media_id = 0; + + p_vod->pf_media_new = MediaNew; + p_vod->pf_media_del = MediaAskDel; + /* These are never used in the core, wonder why they're in the API */ + p_vod->pf_media_add_es = NULL; + p_vod->pf_media_del_es = NULL; + + p_sys->p_fifo_cmd = block_FifoNew(); + if( vlc_thread_create( p_vod, "rtsp vod thread", CommandThread, + VLC_THREAD_PRIORITY_LOW ) ) + { + msg_Err( p_vod, "cannot spawn rtsp vod thread" ); + block_FifoRelease( p_sys->p_fifo_cmd ); + goto error; + } + + return VLC_SUCCESS; + +error: + if( p_sys ) + { + free( p_sys->psz_rtsp_url ); + free( p_sys ); + } + + return VLC_EGENERIC; +} + +/***************************************************************************** + * Close: + *****************************************************************************/ +void CloseVoD( vlc_object_t * p_this ) +{ + vod_t *p_vod = (vod_t *)p_this; + vod_sys_t *p_sys = p_vod->p_sys; + + /* Stop command thread */ + vlc_object_kill( p_vod ); + CommandPush( p_vod, RTSP_CMD_TYPE_NONE, NULL, NULL, 0.0, NULL ); + vlc_thread_join( p_vod ); + + while( block_FifoCount( p_sys->p_fifo_cmd ) > 0 ) + { + rtsp_cmd_t cmd; + block_t *p_block_cmd = block_FifoGet( p_sys->p_fifo_cmd ); + memcpy( &cmd, p_block_cmd->p_buffer, sizeof(cmd) ); + block_Release( p_block_cmd ); + if ( cmd.i_type == RTSP_CMD_TYPE_DEL ) + MediaDel(p_vod, cmd.p_media); + free( cmd.psz_session ); + free( cmd.psz_arg ); + } + block_FifoRelease( p_sys->p_fifo_cmd ); + + /* Check VLM is not buggy */ + if( p_sys->i_media > 0 ) + msg_Err( p_vod, "rtsp vod leaking %d medias", p_sys->i_media ); + TAB_CLEAN( p_sys->i_media, p_sys->media ); + + vlc_mutex_destroy( &p_sys->lock_media ); + + free( p_sys->psz_rtsp_url ); + free( p_sys ); +} + +/***************************************************************************** + * Media handling + *****************************************************************************/ +static vod_media_t *MediaNew( vod_t *p_vod, const char *psz_name, + input_item_t *p_item ) +{ + vod_sys_t *p_sys = p_vod->p_sys; + + vod_media_t *p_media = calloc( 1, sizeof(vod_media_t) ); + if( !p_media ) + return NULL; + + p_media->p_vod = p_vod; + p_media->rtsp = NULL; + TAB_INIT( p_media->i_es, p_media->es ); + p_media->psz_mux = NULL; + p_media->i_length = input_item_GetDuration( p_item ); + + int i_payload_type = 96; + + vlc_mutex_lock( &p_item->lock ); + msg_Dbg( p_vod, "media '%s' has %i declared ES", psz_name, p_item->i_es ); + for( int i = 0; i < p_item->i_es; i++ ) + { + es_format_t *p_fmt = p_item->es[i]; + + switch( p_fmt->i_codec ) + { + case VLC_FOURCC( 'm', 'p', '2', 't' ): + p_media->psz_mux = "ts"; + break; + case VLC_FOURCC( 'm', 'p', '2', 'p' ): + p_media->psz_mux = "ps"; + break; + } + assert(p_media->psz_mux == NULL || p_item->i_es == 1); + + media_es_t *p_es = calloc( 1, sizeof(media_es_t) ); + if( !p_es ) + continue; + + p_es->es_id = p_fmt->i_id; + p_es->rtsp_id = NULL; + + rtp_get_fmt(VLC_OBJECT(p_vod), p_fmt, p_media->psz_mux, + &p_es->rtp_fmt); + + if (p_es->rtp_fmt.ptname == NULL) + { + free(p_es); + continue; + } + + if (p_es->rtp_fmt.payload_type >= 96) + { + if (i_payload_type >= 128) + { + msg_Err(p_vod, "cannot add ES %s (%4.4s): no dynamic " + "payload left", p_es->rtp_fmt.ptname, + (char *)&p_fmt->i_codec); + free(p_es->rtp_fmt.fmtp); + free(p_es); + continue; + } + p_es->rtp_fmt.payload_type = i_payload_type++; + } + + TAB_APPEND( p_media->i_es, p_media->es, p_es ); + msg_Dbg(p_vod, " - added ES %u %s (%4.4s)", + p_es->rtp_fmt.payload_type, p_es->rtp_fmt.ptname, + (char *)&p_fmt->i_codec); + } + vlc_mutex_unlock( &p_item->lock ); + + if (p_media->i_es == 0) + { + msg_Err(p_vod, "no ES was added to the media, aborting"); + goto error; + } + + char *psz_url; + + if( asprintf( &psz_url, "%s%s", p_sys->psz_rtsp_url, psz_name ) < 0 ) + goto error; + + vlc_url_t url; + vlc_UrlParse( &url, psz_url, 0 ); + free( psz_url ); + + p_media->rtsp = RtspSetup(VLC_OBJECT(p_vod), p_media, &url); + + vlc_UrlClean( &url ); + + if (p_media->rtsp == NULL) + goto error; + + for (int i = 0; i < p_media->i_es; i++) + { + media_es_t *p_es = p_media->es[i]; + p_es->rtsp_id = RtspAddId(p_media->rtsp, NULL, 0, + p_es->rtp_fmt.clock_rate, NULL, 0, 0, 0); + if (p_es->rtsp_id == NULL) + goto error; + } + + p_media->id = p_sys->i_media_id++; + + msg_Dbg(p_vod, "adding media '%s', id %i", psz_name, p_media->id); + + CommandPush( p_vod, RTSP_CMD_TYPE_ADD, p_media, NULL, 0.0, NULL ); + return p_media; + +error: + MediaDel(p_vod, p_media); + return NULL; +} + +static void MediaAskDel ( vod_t *p_vod, vod_media_t *p_media ) +{ + msg_Dbg( p_vod, "deleting media id %i", p_media->id ); + CommandPush( p_vod, RTSP_CMD_TYPE_DEL, p_media, NULL, 0.0, NULL ); +} + +static void MediaDel( vod_t *p_vod, vod_media_t *p_media ) +{ + vod_sys_t *p_sys = p_vod->p_sys; + + vlc_mutex_lock( &p_sys->lock_media ); + TAB_REMOVE( p_sys->i_media, p_sys->media, p_media ); + vlc_mutex_unlock( &p_sys->lock_media ); + + if (p_media->rtsp != NULL) + { + for (int i = 0; i < p_media->i_es; i++) + { + media_es_t *p_es = p_media->es[i]; + if (p_es->rtsp_id != NULL) + RtspDelId(p_media->rtsp, p_es->rtsp_id); + } + RtspUnsetup(p_media->rtsp); + } + + while( p_media->i_es ) + { + media_es_t *p_es = p_media->es[0]; + TAB_REMOVE( p_media->i_es, p_media->es, p_es ); + free( p_es->rtp_fmt.fmtp ); + free( p_es ); + } + + TAB_CLEAN( p_media->i_es, p_media->es ); + free( p_media ); +} + +static void CommandPush( vod_t *p_vod, rtsp_cmd_type_t i_type, vod_media_t *p_media, const char *psz_session, + double f_arg, const char *psz_arg ) +{ + rtsp_cmd_t cmd; + block_t *p_cmd; + + memset( &cmd, 0, sizeof(cmd) ); + cmd.i_type = i_type; + cmd.p_media = p_media; + if( p_media ) + cmd.i_media_id = p_media->id; + if( psz_session ) + cmd.psz_session = strdup(psz_session); + cmd.f_arg = f_arg; + if( psz_arg ) + cmd.psz_arg = strdup(psz_arg); + + p_cmd = block_New( p_vod, sizeof(rtsp_cmd_t) ); + memcpy( p_cmd->p_buffer, &cmd, sizeof(cmd) ); + + block_FifoPut( p_vod->p_sys->p_fifo_cmd, p_cmd ); +} + +static void* CommandThread( vlc_object_t *p_this ) +{ + vod_t *p_vod = (vod_t*)p_this; + vod_sys_t *p_sys = p_vod->p_sys; + int canc = vlc_savecancel (); + + while( vlc_object_alive (p_vod) ) + { + block_t *p_block_cmd = block_FifoGet( p_sys->p_fifo_cmd ); + rtsp_cmd_t cmd; + vod_media_t *p_media = NULL; + int i; + + if( !p_block_cmd ) + break; + + memcpy( &cmd, p_block_cmd->p_buffer, sizeof(cmd) ); + block_Release( p_block_cmd ); + + if( cmd.i_type == RTSP_CMD_TYPE_NONE ) + break; + + if ( cmd.i_type == RTSP_CMD_TYPE_ADD ) + { + vlc_mutex_lock( &p_sys->lock_media ); + TAB_APPEND( p_sys->i_media, p_sys->media, cmd.p_media ); + vlc_mutex_unlock( &p_sys->lock_media ); + goto next; + } + + if ( cmd.i_type == RTSP_CMD_TYPE_DEL ) + { + MediaDel(p_vod, cmd.p_media); + goto next; + } + + /* */ + vlc_mutex_lock( &p_sys->lock_media ); + for( i = 0; i < p_sys->i_media; i++ ) + { + if( p_sys->media[i]->id == cmd.i_media_id ) + break; + } + if( i >= p_sys->i_media ) + { + vlc_mutex_unlock( &p_sys->lock_media ); + goto next; + } + p_media = p_sys->media[i]; + + switch( cmd.i_type ) + { + case RTSP_CMD_TYPE_PLAY: + vod_MediaControl( p_vod, p_media, cmd.psz_session, + VOD_MEDIA_PLAY, cmd.psz_arg ); + break; + case RTSP_CMD_TYPE_PAUSE: + vod_MediaControl( p_vod, p_media, cmd.psz_session, + VOD_MEDIA_PAUSE ); + break; + + case RTSP_CMD_TYPE_STOP: + vod_MediaControl( p_vod, p_media, cmd.psz_session, VOD_MEDIA_STOP ); + break; + + case RTSP_CMD_TYPE_SEEK: + vod_MediaControl( p_vod, p_media, cmd.psz_session, + VOD_MEDIA_SEEK, cmd.f_arg ); + break; + +#if 0 + case RTSP_CMD_TYPE_REWIND: + vod_MediaControl( p_vod, p_media, cmd.psz_session, + VOD_MEDIA_REWIND, cmd.f_arg ); + break; + + case RTSP_CMD_TYPE_FORWARD: + vod_MediaControl( p_vod, p_media, cmd.psz_session, + VOD_MEDIA_FORWARD, cmd.f_arg ); + break; +#endif + + default: + break; + } + vlc_mutex_unlock( &p_sys->lock_media ); + + next: + free( cmd.psz_session ); + free( cmd.psz_arg ); + } + + vlc_restorecancel (canc); + return NULL; +} + +/***************************************************************************** + * SDPGenerateVoD + * FIXME: needs to be merged more? + *****************************************************************************/ +char *SDPGenerateVoD( const vod_media_t *p_media, const char *rtsp_url ) +{ + char *psz_sdp; + + assert(rtsp_url != NULL); + /* Check against URL format rtsp://[]:/ */ + bool ipv6 = strlen( rtsp_url ) > 7 && rtsp_url[7] == '['; + + /* Dummy destination address for RTSP */ + struct sockaddr_storage dst; + socklen_t dstlen = ipv6 ? sizeof( struct sockaddr_in6 ) + : sizeof( struct sockaddr_in ); + memset (&dst, 0, dstlen); + dst.ss_family = ipv6 ? AF_INET6 : AF_INET; +#ifdef HAVE_SA_LEN + dst.ss_len = dstlen; +#endif + + psz_sdp = vlc_sdp_Start( VLC_OBJECT( p_media->p_vod ), "sout-rtp-", + NULL, 0, (struct sockaddr *)&dst, dstlen ); + if( psz_sdp == NULL ) + return NULL; + + if( p_media->i_length > 0 ) + { + lldiv_t d = lldiv( p_media->i_length / 1000, 1000 ); + sdp_AddAttribute( &psz_sdp, "range"," npt=0-%lld.%03u", d.quot, + (unsigned)d.rem ); + } + + sdp_AddAttribute ( &psz_sdp, "control", "%s", rtsp_url ); + + /* No locking needed, the ES table can't be modified now */ + for( int i = 0; i < p_media->i_es; i++ ) + { + media_es_t *p_es = p_media->es[i]; + rtp_format_t *rtp_fmt = &p_es->rtp_fmt; + const char *mime_major; /* major MIME type */ + + switch( rtp_fmt->cat ) + { + case VIDEO_ES: + mime_major = "video"; + break; + case AUDIO_ES: + mime_major = "audio"; + break; + case SPU_ES: + mime_major = "text"; + break; + default: + continue; + } + + sdp_AddMedia( &psz_sdp, mime_major, "RTP/AVP", 0, + rtp_fmt->payload_type, false, 0, + rtp_fmt->ptname, rtp_fmt->clock_rate, rtp_fmt->channels, + rtp_fmt->fmtp ); + + char *track_url = RtspAppendTrackPath( p_es->rtsp_id, rtsp_url ); + if( track_url != NULL ) + { + sdp_AddAttribute ( &psz_sdp, "control", "%s", track_url ); + free( track_url ); + } + } + + return psz_sdp; +} + +int vod_start(vod_media_t *p_media, const char *psz_session) +{ + char *psz_output; + if (asprintf(&psz_output, "rtp{vod-session=%s}", psz_session) == -1) + return VLC_ENOMEM; + + CommandPush(p_media->p_vod, RTSP_CMD_TYPE_PLAY, p_media, + psz_session, 0.0, psz_output); + + free(psz_output); + return VLC_SUCCESS; +} + +/* FIXME: this sucks, RTSP doesn't really toggle the pause state, it + * either PAUSEs or PLAYs */ +void vod_toggle_pause(vod_media_t *p_media, const char *psz_session) +{ + CommandPush(p_media->p_vod, RTSP_CMD_TYPE_PAUSE, p_media, + psz_session, 0.0, NULL); +} + +void vod_stop(vod_media_t *p_media, const char *psz_session) +{ + CommandPush(p_media->p_vod, RTSP_CMD_TYPE_STOP, p_media, + psz_session, 0.0, NULL); +} + +void vod_seek(vod_media_t *p_media, const char *psz_session, float time) +{ + /* FIXME: why do we even bother converting from time to position??? */ + double position = time / (((double)(p_media->i_length)) / CLOCK_FREQ / 100); + CommandPush(p_media->p_vod, RTSP_CMD_TYPE_SEEK, p_media, + psz_session, position, NULL); +} + +/* XXX: eww gross */ +struct vlm_t +{ + VLC_COMMON_MEMBERS + + vlc_mutex_t lock; + vlc_thread_t thread; + vlc_mutex_t lock_manage; + vlc_cond_t wait_manage; + /* tell vlm thread there is work to do */ + bool input_state_changed; + /* */ + int64_t i_id; + + /* Vod server (used by media) */ + vod_t *p_vod; + + /* Skip the rest... */ +}; + +/* Walk up the object tree to fetch the VoD object + * FIXME: do this properly... or even not at all */ +static vod_t *vod_get_vod_object(sout_stream_t *p_stream) +{ +#if 0 + vlc_object_t *p_input = vlc_object_find(p_stream, VLC_OBJECT_INPUT, + FIND_PARENT); + vlc_object_release(p_input); + return (vod_t *) p_input->p_parent; +#endif + vlm_t *p_vlm = (vlm_t *) p_stream->p_parent->p_parent; + return p_vlm->p_vod; +} + +/* Allow the RTP stream output module to fetch data from their + * corresponding VoD media and RTSP session established by the VoD code */ +vod_media_t *vod_get_session(sout_stream_t *p_stream, const char *psz_session, + const char **mux, int64_t *i_ts_init) +{ + vod_t *p_vod = vod_get_vod_object(p_stream); + vod_sys_t *p_sys = p_vod->p_sys; + vod_media_t *p_media = NULL; + + vlc_mutex_lock(&p_sys->lock_media); + for (int i = 0; i < p_sys->i_media; i++) + { + if (RtspClientLookup(p_sys->media[i]->rtsp, psz_session, + i_ts_init) == VLC_SUCCESS) + { + p_media = p_sys->media[i]; + *mux = p_media->psz_mux; + break; + } + } + vlc_mutex_unlock(&p_sys->lock_media); + + /* The VLM stops all instances before deleting a media, so this + * reference will remain valid during the lifetime of the rtp + * stream output using it. */ + return p_media; +} + +/* Match an RTP id to a VoD media ES and RTSP track to initialize it + * with the data that was already set up */ +int vod_init_id(vod_media_t *p_media, const char *psz_session, int es_id, + sout_stream_id_t *sout_id, rtp_format_t *rtp_fmt, + uint32_t *ssrc, uint16_t *seq_init) +{ + media_es_t *p_es; + + if (p_media->psz_mux != NULL) + { + assert(p_media->i_es == 1); + p_es = p_media->es[0]; + } + else + { + p_es = NULL; + /* No locking needed, the ES table can't be modified now */ + for (int i = 0; i < p_media->i_es; i++) + { + if (p_media->es[i]->es_id == es_id) + { + p_es = p_media->es[i]; + break; + } + } + if (p_es == NULL) + return VLC_EGENERIC; + } + + memcpy(rtp_fmt, &p_es->rtp_fmt, sizeof(*rtp_fmt)); + if (p_es->rtp_fmt.fmtp != NULL) + rtp_fmt->fmtp = strdup(p_es->rtp_fmt.fmtp); + if (RtspTrackAttach(p_media->rtsp, psz_session, p_es->rtsp_id, + sout_id, ssrc, seq_init) != VLC_SUCCESS) + return VLC_EGENERIC; + + return VLC_SUCCESS; +} + +/* Remove references to the RTP id from its RTSP track */ +void vod_detach_id(vod_media_t *p_media, const char *psz_session, + sout_stream_id_t *sout_id) +{ + RtspTrackDetach(p_media->rtsp, psz_session, sout_id); +} + Regards, -- Pierre Ynard "Une ?me dans un corps, c'est comme un dessin sur une feuille de papier." From brezhoneg1 at yahoo.fr Thu Jun 3 14:00:31 2010 From: brezhoneg1 at yahoo.fr (brezhoneg1) Date: Thu, 03 Jun 2010 14:00:31 +0200 Subject: [vlc-devel] [RFC] design issue related to resources (input) Message-ID: <4C07995F.4050403@yahoo.fr> Hello, Recent change in git master have brought a regression with skins2, that may point out a deeper design issue and wider questions. _Test case for regression_ - start 'vlc -I skins --no-video' - play an item - quit vlc (while playing is underway) vlc then crashes in input_resource_HoldAout with : /LibVLC fatal error locking mutex (22) in thread 29236 at misc/pthread.c:223 in vlc_mutex_lock/ which means that we try to use an already deallocated mutex (the lock_hold for resource) Note that --no-video is important in this test case. Otherwise, resource seems to be kept accessible longer, and no crash occurs. _Cause for the problem _ Actually, during playlist deactivation, the current input thread is joined, the input object is released and resource is deallocated. Yet, the input object is still held by some other parts of vlc (the skins2 interface and the qt4 dialog provider) , and resource is a key part of the input object for input_GetAout, input_GetVout, .... helper functions to succeed. As long as an input is not truly deallocated, resources should be accessible, since we need them to remove callbacks on aout/vout _Wider Reflection_ From the perspective of an interface developer, the vlc core may be a bit complicated. We need to retrieve the playlist object, then successive inputs, then aout or vout to add callbacks on all of them. Since aout/vout reuse, it is even trickier in a sense that not all variables are reset on a per input basis (see the audio equalizer). I always wondered why a single object (playlist, media player for libvlc or vlm manager) would not host all exported variables worth of interest for interface. Actually, aout/vout or successive inputs for a playlist should be kept as an internal implementation, not something interface developers must be aware of. Because of all these different objects, interfaces need to retain references or retrieve them with input_GetAout .... to properly remove callbacks. That may actually conflict with the way vlc core wishes to deallocate things. If interfaces were to handle only a single object, then all the complexity would be mutualized in a single place (at vlc core), instead of in all interfaces (qt4, skins, ....). This single object (playlist, media player, vlm manager) could be just a proxy for the already existing input/aout/vout objects and related variables. Since some work is currently being done in this matter, I hope this email can be of any help.. Regards Erwan10 -------------- next part -------------- An HTML attachment was scrubbed... URL: From fenrir at elivagar.org Thu Jun 3 14:58:46 2010 From: fenrir at elivagar.org (Laurent Aimar) Date: Thu, 3 Jun 2010 14:58:46 +0200 Subject: [vlc-devel] [RFC] design issue related to resources (input) In-Reply-To: <4C07995F.4050403@yahoo.fr> References: <4C07995F.4050403@yahoo.fr> Message-ID: <20100603125846.GA16135@elivagar.org> Hi, On Thu, Jun 03, 2010 at 02:00:31PM +0200, brezhoneg1 wrote: > Recent change in git master have brought a regression with skins2, that may > point out a deeper design issue and wider questions. > > > Test case for regression > > - start 'vlc -I skins --no-video' > - play an item > - quit vlc (while playing is underway) > > vlc then crashes in input_resource_HoldAout with : > > LibVLC fatal error locking mutex (22) in thread 29236 at misc/pthread.c:223 in > vlc_mutex_lock > > which means that we try to use an already deallocated mutex (the lock_hold for > resource) > > Note that --no-video is important in this test case. Otherwise, resource seems > to be kept accessible longer, and no crash occurs. > > > Cause for the problem > > Actually, during playlist deactivation, the current input thread is joined, the > input object is released and resource is deallocated. Yet, the input object is > still held by some other parts of vlc (the skins2 interface and the qt4 dialog > provider) , and resource is a key part of the input object for input_GetAout, > input_GetVout, .... helper functions to succeed. I will quickly fix this issue. Thanks for the report. > Wider Reflection > > >From the perspective of an interface developer, the vlc core may be a bit > complicated. We need to retrieve the playlist object, then successive inputs, > then aout or vout to add callbacks on all of them. Since aout/vout reuse, it is > even trickier in a sense that not all variables are reset on a per input basis > (see the audio equalizer). I always wondered why a single object (playlist, > media player for libvlc or vlm manager) would not host all exported variables > worth of interest for interface. Actually, aout/vout or successive inputs for a > playlist should be kept as an internal implementation, not something interface > developers must be aware of. Because of all these different objects, interfaces > need to retain references or retrieve them with input_GetAout .... to properly > remove callbacks. That may actually conflict with the way vlc core wishes to > deallocate things. If interfaces were to handle only a single object, then all > the complexity would be mutualized in a single place (at vlc core), instead of > in all interfaces (qt4, skins, ....). This single object (playlist, media > player, vlm manager) could be just a proxy for the already existing input/aout/ > vout objects and related variables. I do aggree that an input manager should be implemented. But it's a lot of work with some tricky parts (like multiple vout/aout supports, configurations, API...). I am not interested to work on it for the moment. Dunno if someone feels up to the task, knows the core and requirements and is motivated enough. -- fenrir From jb at videolan.org Thu Jun 3 17:08:53 2010 From: jb at videolan.org (Jean-Baptiste Kempf) Date: Thu, 3 Jun 2010 17:08:53 +0200 Subject: [vlc-devel] [vlc-commits] Tag 1.1.0-rc2 : Jean-Baptiste Kempf : VLC 1.1.0-rc2 - The Luggage In-Reply-To: <20100603134551.5A800E83CA@albiero.videolan.org> References: <20100603134551.5A800E83CA@albiero.videolan.org> Message-ID: <20100603150853.GA12848@videolan.org> On Thu, Jun 03, 2010 at 03:45:51PM +0200, git at videolan.org wrote : > VLC 1.1.0-rc2 - The Luggage ftp://ftp.videolan.org/pub/testing/vlc-1.1.0-rc2/vlc-1.1.0-rc2.tar.bz2 -- Jean-Baptiste Kempf http://www.jbkempf.com/ From jpeg at videolan.org Thu Jun 3 19:48:18 2010 From: jpeg at videolan.org (=?UTF-8?Q?Jean=2DPhilippe_Andr=C3=A9?=) Date: Fri, 4 Jun 2010 01:48:18 +0800 Subject: [vlc-devel] About #3353 Message-ID: Hello, #3353: "When both .lua and .luac files with the same filename are present in the same lua\sd folder, they are both listed instead the .lua should be ignored in this case." As we do ship both versions in the same folder, there is an urgent need to fix this - one way or the other. Fabio proposed a patch some time ago, that allows to execute both versions of the SD (the script and its compiled counterpart). But it changes the API and I'm not very keen with this, so near from the release. Moreover, it does not actually solve this issue, as SDs are still listed twice. I have a solution to actually fix #3353. When two files have the exact same name (except for the trailing c), only the most recent is kept (with a higher priority for the .luac version). But it's an ugly HACK. See attachements. I am not happy with either these solutions. I don't see the point in having both versions of the scripts in the same folder. Indeed, playlist, meta, extensions, ... will also be listed twice. This means two extensions for the price of one, and twice more tests for playlist scripts. We could either not ship the sources .lua (but that would be a shame), or ship them in some other folder, maybe. Best, -- Jean-Philippe Andr? (jpeg) -------------- next part -------------- A non-text attachment was scrubbed... Name: 0001-LuaSD-allow-loading-.luac-and-.lua-at-the-same-time.patch Type: text/x-patch Size: 6266 bytes Desc: not available URL: -------------- next part -------------- A non-text attachment was scrubbed... Name: 0001-Lua-ugly-HACK-fixing-3353.patch Type: text/x-patch Size: 3671 bytes Desc: not available URL: From remi at remlab.net Thu Jun 3 20:03:27 2010 From: remi at remlab.net (=?iso-8859-15?q?R=E9mi?= Denis-Courmont) Date: Thu, 3 Jun 2010 21:03:27 +0300 Subject: [vlc-devel] About #3353 In-Reply-To: References: Message-ID: <201006032103.28189.remi@remlab.net> Le jeudi 3 juin 2010 20:48:18 Jean-Philippe Andr?, vous avez ?crit : > As we do ship both versions in the same folder, there is an urgent > need to fix this - one way or the other. As far as I know, we do not ship the .lua files. > I am not happy with either these solutions. I don't see the point in > having both versions of the scripts in the same folder. Indeed, > playlist, meta, extensions, ... will also be listed twice. That's why we don't install both (or then there is a bug in the installation procedure). > This means > two extensions for the price of one, and twice more tests for playlist > scripts. > We could either not ship the sources .lua (but that would be a shame), > or ship them in some other folder, maybe. I don't see the shame. We don't ship the C and C++ source code either in the binary packages either. We already have the source tarballs and git repositories for that purpose. -- R?mi Denis-Courmont http://www.remlab.net/ http://fi.linkedin.com/in/remidenis From jpeg at videolan.org Thu Jun 3 20:09:24 2010 From: jpeg at videolan.org (=?UTF-8?Q?Jean=2DPhilippe_Andr=C3=A9?=) Date: Fri, 4 Jun 2010 02:09:24 +0800 Subject: [vlc-devel] About #3353 In-Reply-To: <201006032103.28189.remi@remlab.net> References: <201006032103.28189.remi@remlab.net> Message-ID: 2010/6/4 R?mi Denis-Courmont : > Le jeudi 3 juin 2010 20:48:18 Jean-Philippe Andr?, vous avez ?crit : >> As we do ship both versions in the same folder, there is an urgent >> need to fix this - one way or the other. > > As far as I know, we do not ship the .lua files. In the .7z nightly builds, there are .lua and .luac files. >> I am not happy with either these solutions. I don't see the point in >> having both versions of the scripts in the same folder. Indeed, >> playlist, meta, extensions, ... will also be listed twice. > > That's why we don't install both (or then there is a bug in the installation > procedure). Well, it seems we do... >> This means >> two extensions for the price of one, and twice more tests for playlist >> scripts. >> We could either not ship the sources .lua (but that would be a shame), >> or ship them in some other folder, maybe. > > I don't see the shame. We don't ship the C and C++ source code either in the > binary packages either. We already have the source tarballs and git > repositories for that purpose. The difference may be that we would like users to see that these are "hackable" files. But I'd rather not include the .lua files than adding any of these hacks to VLC. -- Jean-Philippe Andr? From yvon.thoraval at gmail.com Thu Jun 3 20:29:33 2010 From: yvon.thoraval at gmail.com (Yvon Thoraval) Date: Thu, 3 Jun 2010 20:29:33 +0200 Subject: [vlc-devel] Lunettes over Mac OS X SL Message-ID: Hey all, i've downloaded Lunettes and so following instruction at < http://wiki.github.com/pdherbemont/Glasses/how-to-build> and wanted to build usind XCode 3.2.2 over Mac OS X Snow Leopard. i get compile errors because XCode is unable to find VLCKit.h (vlc/projects/macosx/ framework/Headers/Public/VLCKit.h) which exists. all the 25 so called errors are related to that. how to get out of this hole ? best, Yvon -------------- next part -------------- An HTML attachment was scrubbed... URL: From remi at remlab.net Thu Jun 3 20:38:13 2010 From: remi at remlab.net (=?iso-8859-1?q?R=E9mi?= Denis-Courmont) Date: Thu, 3 Jun 2010 21:38:13 +0300 Subject: [vlc-devel] =?iso-8859-1?q?=5BPATCH=5D=A0Merge_VoD_module_into_RT?= =?iso-8859-1?q?P_stream_output_module?= In-Reply-To: <20100603052732.GA501@via.ecp.fr> References: <20100603052732.GA501@via.ecp.fr> Message-ID: <201006032138.14293.remi@remlab.net> Le jeudi 3 juin 2010 08:27:32 Pierre Ynard, vous avez ?crit : > It currently does so by walking up the object tree from the RTP sout to > the VoD object. I used to use a simple vlc_object_find(INPUT, PARENT) > (which was pretty safe since the VoD core doesn't use sout-keep, if > I understand the situation correctly), but this was recently broken. > Once this is figured out, I can properly rewrite this part. Or, an > alternative approach would be to pass a pointer to the vod_media_t in > the #rtp stream output chain, but this is a little ugly too (though it > would save a lock). Opinions? I would rather not pass a pointer in the chain. Stringifying pointers confuses valgrind, and allows users to shoot themselves in the foot. Admittedly, we do it in some cases anyway, mostly for LibVLC needs. But in this case, you can probably simply create a pointer variable and inherit it in the RTP stream output. You will probably need the attached patch for the non-VoD case. Synchronization will be "interesting" though. -- R?mi Denis-Courmont http://www.remlab.net/ http://fi.linkedin.com/in/remidenis -------------- next part -------------- A non-text attachment was scrubbed... Name: patch Type: text/x-patch Size: 522 bytes Desc: not available URL: From xtophe at chewa.net Thu Jun 3 21:03:00 2010 From: xtophe at chewa.net (Christophe Mutricy) Date: Thu, 3 Jun 2010 21:03:00 +0200 Subject: [vlc-devel] About #3353 In-Reply-To: References: <201006032103.28189.remi@remlab.net> Message-ID: <20100603190300.GQ16350@chewa.net> On Fri, Jun 04, 10 at 02:09 +0800, Jean-Philippe Andr? wrote: > 2010/6/4 R?mi Denis-Courmont : > > Le jeudi 3 juin 2010 20:48:18 Jean-Philippe Andr?, vous avez ?crit : > >> As we do ship both versions in the same folder, there is an urgent > >> need to fix this - one way or the other. > > > > As far as I know, we do not ship the .lua files. > > In the .7z nightly builds, there are .lua and .luac files. On *nix only .luac are installed (in ${prefix}/lib/vlc/lua/) So we can s/*.*/*.luac/ around line 834 of Makefile.am (and while we are at it use a loop instead of duplicating the install for every dir in share/lua) -- Xtophe From jb at videolan.org Thu Jun 3 21:04:50 2010 From: jb at videolan.org (Jean-Baptiste Kempf) Date: Thu, 3 Jun 2010 21:04:50 +0200 Subject: [vlc-devel] About #3353 In-Reply-To: References: <201006032103.28189.remi@remlab.net> Message-ID: <20100603190450.GA24239@videolan.org> On Fri, Jun 04, 2010 at 02:09:24AM +0800, Jean-Philippe Andr? wrote : > The difference may be that we would like users to see that these are > "hackable" files. > But I'd rather not include the .lua files than adding any of these hacks to VLC. Agreed. Having .lua files would be cool, but adding a HACK this late is not a good idea at all. Win32 installer can be fixed easily then. Best Regards, -- Jean-Baptiste Kempf http://www.jbkempf.com/ From WeberAndre at gmx.de Thu Jun 3 21:04:38 2010 From: WeberAndre at gmx.de (Andre Weber) Date: Thu, 3 Jun 2010 21:04:38 +0200 Subject: [vlc-devel] [vlc-commits] commit: atmo: add support for Fnordlicht devices (KaiLauterbach ) References: <20100603182533.E4CAAE887B@albiero.videolan.org> Message-ID: <013101cb034f$9d6f2e00$6401a8c0@homer2> Hello, @Jean-Baptiste Kempf Is it allowed to ask you - could you please cherry pick the two Fnordlicht commits into the VLC 1.1.x - RC branch? c215f7b79628a32373cf0041152cff1a5042d15b 2b88fd41466b886c4c1b06d4a7b823d70c41342c I know that adding new features durring releaseing isn't usual (nice) - but it would be nice to have. For me it works on Win32 and Kai Lauterbach tested it on Linux - so far the code builds fine for both OS. Best, Andr? ----- Original Message ----- From: To: Sent: Thursday, June 03, 2010 8:25 PM Subject: [vlc-commits] commit: atmo: add support for Fnordlicht devices (KaiLauterbach ) > vlc | branch: master | Kai Lauterbach | Thu Jun 3 19:21:52 2010 +0200| [c215f7b79628a32373cf0041152cff1a5042d15b] | committer: Andr? Weber > > atmo: add support for Fnordlicht devices > > The Fnordlicht-Class implements only parts of the fnordlicht-protocol: > sync, stop, start_bootloader, boot_enter_application and fade_rgb > Have a look at http://github.com/fd0/fnordlicht/raw/master/doc/PROTOCOL > for more details. > > Signed-off-by: Andr? Weber > > > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=c215f7b79628a32373cf0041152cff1a5042d15b > --- > > modules/video_filter/Modules.am | 1 + > modules/video_filter/atmo/AtmoConfig.cpp | 114 ++++- > modules/video_filter/atmo/AtmoConfig.h | 41 ++- > modules/video_filter/atmo/AtmoDefs.h | 9 +- > modules/video_filter/atmo/AtmoTools.cpp | 21 +- > modules/video_filter/atmo/FnordlichtConnection.cpp | 464 ++++++++++++++++++++ > modules/video_filter/atmo/FnordlichtConnection.h | 88 ++++ > modules/video_filter/atmo/atmo.cpp | 73 +++- > 8 files changed, 762 insertions(+), 49 deletions(-) > > Diff: http://git.videolan.org/gitweb.cgi/vlc.git/?a=commitdiff;h=c215f7b79628a32373cf0041152cff1a5042d15b > _______________________________________________ > vlc-commits mailing list > vlc-commits at videolan.org > http://mailman.videolan.org/listinfo/vlc-commits > From linkfanel at yahoo.fr Thu Jun 3 21:41:38 2010 From: linkfanel at yahoo.fr (Pierre Ynard) Date: Thu, 3 Jun 2010 21:41:38 +0200 Subject: [vlc-devel] [PATCH] Merge VoD module into RTP stream output module In-Reply-To: <201006032138.14293.remi@remlab.net> Message-ID: <20100603194138.GA12025@via.ecp.fr> > But in this case, you can probably simply create a pointer variable > and inherit it in the RTP stream output. You will probably need the > attached patch for the non-VoD case. I guess so, thanks. But just like the input options are broken now, I can't see a way to pass this variable. -- Pierre Ynard "Une ?me dans un corps, c'est comme un dessin sur une feuille de papier." From jb at videolan.org Fri Jun 4 01:46:41 2010 From: jb at videolan.org (Jean-Baptiste Kempf) Date: Fri, 4 Jun 2010 01:46:41 +0200 Subject: [vlc-devel] [PACKAGERS] Tag 1.1.0-rc2 In-Reply-To: <20100603150853.GA12848@videolan.org> References: <20100603134551.5A800E83CA@albiero.videolan.org> <20100603150853.GA12848@videolan.org> Message-ID: <20100603234641.GA12315@videolan.org> On Thu, Jun 03, 2010 at 05:08:53PM +0200, Jean-Baptiste Kempf wrote : > ftp://ftp.videolan.org/pub/testing/vlc-1.1.0-rc2/vlc-1.1.0-rc2.tar.bz2 As we are getting closer to the release (next week, probably), I STRONGLY recommand to linux/Unix packagers to test this package quite soon and test it (or upload to your testing repo) and complain now about issues you might have. Do it before it is too late... Many many thanks, -- Jean-Baptiste Kempf http://www.jbkempf.com/ From parveenjain at live.com Fri Jun 4 08:54:34 2010 From: parveenjain at live.com (Parveen Jain) Date: Fri, 4 Jun 2010 12:24:34 +0530 Subject: [vlc-devel] how to write a sample video streaming application using libvlc-dev Message-ID: Hi All, I am writing a SIP application , which will establish a video session(by sending SIP INVITE) with peer entity and once it gets confirmation from the peer(200 OK of SIP) the application will send out the video stream to his designated RTP port. For this I am trying to explore the video streaming capabilities of VLC.I know that VLC can do video streaming using RTP/UDP very easily(using command line).The same thing I am trying to achieve using its External APIs.I had tried to explore the APIs of "libVlc-dev" but somehow got confused in its usage for creating such video streaming application.My current requirements are just to read from a video file and stream it using a very basic video codec(it can be H248). Any help or even further reference will be highly appreciated. Regards, Parveen Jain _________________________________________________________________ See the news as it happens on MSN videos http://video.in.msn.com/ -------------- next part -------------- An HTML attachment was scrubbed... URL: From d3ck0r at gmail.com Fri Jun 4 09:10:06 2010 From: d3ck0r at gmail.com (J Decker) Date: Fri, 4 Jun 2010 00:10:06 -0700 Subject: [vlc-devel] how to write a sample video streaming application using libvlc-dev In-Reply-To: References: Message-ID: You probably don't really need to explore the API itself. I did a similar project to provide a service of a stream on demand which other clients would be told they could connect to. Setting this up with just the command line options and/or vlc configuration file (vlc.cfg or like .vlcrc), then all you need to do is fork a vlc instance to do the service, and kill it when it needs to be ended. so if you have a few scripts to like 'host_stream ' ... well on the other side, just connect with your appropriate player. On Thu, Jun 3, 2010 at 11:54 PM, Parveen Jain wrote: > Hi All, > ? I am writing a SIP application , which will establish a video session(by > sending SIP INVITE) with peer entity and once it gets confirmation from the > peer(200 OK of SIP) the application will send out the video stream to his > designated RTP port. > ??? For this I am trying to explore the video streaming capabilities of > VLC.I know that VLC can do video streaming using RTP/UDP very easily(using > command line).The same thing I am trying to achieve using its External > APIs.I had tried to explore the APIs of "libVlc-dev" but somehow got > confused in its usage for creating such video streaming application.My > current requirements are just to read from a video file and stream it using > a very basic video codec(it can be H248). > > Any help or even further reference will be highly appreciated. > > Regards, > Parveen Jain > > ________________________________ > Chin music and high voltage T20 action on MSN Sports Sign up now. > _______________________________________________ > vlc-devel mailing list > To unsubscribe or modify your subscription options: > http://mailman.videolan.org/listinfo/vlc-devel > > From beauze.h at gmail.com Fri Jun 4 16:18:55 2010 From: beauze.h at gmail.com (Hugo Beauzee-Luyssen) Date: Fri, 4 Jun 2010 16:18:55 +0200 Subject: [vlc-devel] [Patch] Allow pausing using space in playlist mode Message-ID: Hi, When the playlist is in docked mode, it is impossible to pause the playback using the 'space' key, as the QAbstractItemView catches it. Though this is a standard behaviour of list, it is useless and prevents the user to pause its playback using space. This patch corrects it, by intercepting the key event and forwarding it to the basic QWidget key handler, if the space key is pressed without any modifiers, thus allowing multiple selection using space + ctrl/shift. Regards, -- Hugo Beauz?e-Luyssen -------------- next part -------------- A non-text attachment was scrubbed... Name: 0001-Playlist-Allow-pausing-the-playback-using-space.patch Type: text/x-patch Size: 2588 bytes Desc: not available URL: From david.glaude at gmail.com Fri Jun 4 23:32:29 2010 From: david.glaude at gmail.com (David Glaude) Date: Fri, 4 Jun 2010 23:32:29 +0200 Subject: [vlc-devel] [vlc-commits] commit: youtube.lua: support WebM formats (Pierre Ynard ) In-Reply-To: <20100604165937.14D22E980F@albiero.videolan.org> References: <20100604165937.14D22E980F@albiero.videolan.org> Message-ID: This is not to start a flame war... I wonder what is the point to have a LUA script to get WebM video from YouTube if WebM licence compatible or not with the VLC/ffmpeg licence and no binary with WebM linked will be distributed? Did I miss some licence change in WebM? Thanks. David Glaude 2010/6/4 > vlc | branch: master | Pierre Ynard | Fri Jun 4 > 18:51:09 2010 +0200| [f18b314bd2e6059e73fbc4dc18000c18aa6e4535] | committer: > Pierre Ynard > > youtube.lua: support WebM formats > > We parse the additional HTML5 section too, the only place where the > WebM formats are listed. If the URL contains "&html5=True", the WebM > formats are preferred, when available. > > > > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=f18b314bd2e6059e73fbc4dc18000c18aa6e4535 > -------------- next part -------------- An HTML attachment was scrubbed... URL: From alex.converse at gmail.com Fri Jun 4 23:39:11 2010 From: alex.converse at gmail.com (Alex Converse) Date: Fri, 4 Jun 2010 17:39:11 -0400 Subject: [vlc-devel] [vlc-commits] commit: youtube.lua: support WebM formats (Pierre Ynard ) In-Reply-To: References: <20100604165937.14D22E980F@albiero.videolan.org> Message-ID: On Fri, Jun 4, 2010 at 5:32 PM, David Glaude wrote: > This is not to start a flame war... > > I wonder what is the point to have a LUA script to get WebM video from > YouTube if WebM licence compatible or not with the VLC/ffmpeg licence and > no binary with WebM linked will be distributed? > > Did I miss some licence change in WebM? > > Yes, it changed about an hour ago https://review.webmproject.org/78 --Alex Converse -------------- next part -------------- An HTML attachment was scrubbed... URL: From david.glaude at gmail.com Fri Jun 4 23:36:21 2010 From: david.glaude at gmail.com (David Glaude) Date: Fri, 4 Jun 2010 23:36:21 +0200 Subject: [vlc-devel] [vlc-commits] commit: youtube.lua: support WebM formats (Pierre Ynard ) In-Reply-To: References: <20100604165937.14D22E980F@albiero.videolan.org> Message-ID: Sorry I should have read /. before pushing send: http://news.slashdot.org/story/10/06/04/1953232/WebM-Licensing-Problems-Resolved 2010/6/4 David Glaude > This is not to start a flame war... > > I wonder what is the point to have a LUA script to get WebM video from > YouTube if WebM licence compatible or not with the VLC/ffmpeg licence and > no binary with WebM linked will be distributed? > > Did I miss some licence change in WebM? > > Thanks. > > David Glaude > > 2010/6/4 > > vlc | branch: master | Pierre Ynard | Fri Jun 4 >> 18:51:09 2010 +0200| [f18b314bd2e6059e73fbc4dc18000c18aa6e4535] | committer: >> Pierre Ynard >> >> youtube.lua: support WebM formats >> >> We parse the additional HTML5 section too, the only place where the >> WebM formats are listed. If the URL contains "&html5=True", the WebM >> formats are preferred, when available. >> >> > >> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=f18b314bd2e6059e73fbc4dc18000c18aa6e4535 >> > -------------- next part -------------- An HTML attachment was scrubbed... URL: From salsaman at gmail.com Fri Jun 4 12:11:42 2010 From: salsaman at gmail.com (salsaman) Date: Fri, 4 Jun 2010 07:11:42 -0300 Subject: [vlc-devel] Updated patch for ogg/theora seeking Message-ID: Hi all, please find attached an updated patch for ogg/theora seeking, which has been approved by JB. Please can somebody let me know when it has been applied. Regards, Gabriel "salsaman" http://lives.sourceforge.net https://www.ohloh.net/accounts/salsaman -------------- next part -------------- An HTML attachment was scrubbed... URL: -------------- next part -------------- A non-text attachment was scrubbed... Name: 0001-ogg-theora-seek-changes-for-GSOC-project.patch Type: text/x-patch Size: 56411 bytes Desc: not available URL: From remi at remlab.net Sat Jun 5 15:04:39 2010 From: remi at remlab.net (=?iso-8859-15?q?R=E9mi?= Denis-Courmont) Date: Sat, 5 Jun 2010 16:04:39 +0300 Subject: [vlc-devel] [Patch] Allow pausing using space in playlist mode In-Reply-To: References: Message-ID: <201006051604.39557.remi@remlab.net> Le vendredi 4 juin 2010 17:18:55 Hugo Beauzee-Luyssen, vous avez ?crit : > When the playlist is in docked mode, it is impossible to pause the > playback using the 'space' key, as the QAbstractItemView catches it. > Though this is a standard behaviour of list, it is useless and > prevents the user to pause its playback using space. > This patch corrects it, by intercepting the key event and forwarding > it to the basic QWidget key handler, if the space key is pressed > without any modifiers, thus allowing multiple selection using space + > ctrl/shift. The comments say 'otherwise' in plenty of places, but there are no else statements. I find this suspicious. -- R?mi Denis-Courmont http://www.remlab.net/ http://fi.linkedin.com/in/remidenis From remi at remlab.net Sat Jun 5 15:08:14 2010 From: remi at remlab.net (=?iso-8859-15?q?R=E9mi?= Denis-Courmont) Date: Sat, 5 Jun 2010 16:08:14 +0300 Subject: [vlc-devel] [Videolan-devel] trying to write a sample video streaming application In-Reply-To: References: Message-ID: <201006051608.14656.remi@remlab.net> Le vendredi 4 juin 2010 09:52:02 Parveen Jain, vous avez ?crit : > Hi All, > I am writing a SIP application , which will establish a video session(by > sending SIP INVITE) with peer entity and once it gets confirmation from > the peer(200 OK of SIP) the application will send out the video stream to > his designated RTP port. For this I am trying to explore the video > streaming capabilities of VLC.I know that VLC can do video streaming using > RTP/UDP very easily(using command line).The same thing I am trying to > achieve using its External APIs.I had tried to explore the APIs of > "libVlc-dev" but somehow got confused in its usage for creating such video > streaming application.My current requirements are just to read from a > video file and stream it using a very basic video codec(it can be H248). There are is no well defined API to stream with LibVLC. You need to set the "sout" options as you would do with the command line VLC. You should add the option to the LibVLC media item provided to the LibVLC media player. -- R?mi Denis-Courmont http://www.remlab.net/ http://fi.linkedin.com/in/remidenis From remi at remlab.net Sat Jun 5 15:13:20 2010 From: remi at remlab.net (=?iso-8859-15?q?R=E9mi?= Denis-Courmont) Date: Sat, 5 Jun 2010 16:13:20 +0300 Subject: [vlc-devel] [PATCH] input : apply start time option immediately In-Reply-To: <1275463956.4c06091405148@imp.celeos.eu> References: <1275463956.4c06091405148@imp.celeos.eu> Message-ID: <201006051613.21109.remi@remlab.net> Le mercredi 2 juin 2010 10:32:36 S?bastien Escudier, vous avez ?crit : > Hi, > > This patch avoids to have a few frame of the beginning of the video. > Instead, the first frame will be the one at start-time option. > > So if someone with better knowledge of input thread can confirm this patch > is ok ? Looks correct but Laurent knows better. It is questionable why the other control requests are deferred and not just this one. Also, we should probably had a dedicated ControlFoobar() function instead of going through Control(). -- R?mi Denis-Courmont http://www.remlab.net/ http://fi.linkedin.com/in/remidenis From remi at remlab.net Sat Jun 5 15:18:30 2010 From: remi at remlab.net (=?utf-8?q?R=C3=A9mi?= Denis-Courmont) Date: Sat, 5 Jun 2010 16:18:30 +0300 Subject: [vlc-devel] Issue with libVLC and pulse In-Reply-To: References: <20100523185642.GA24551@videolan.org> <201005291933.48129.remi@remlab.net> Message-ID: <201006051618.30887.remi@remlab.net> Le samedi 29 mai 2010 19:38:34 Colin Guthrie, vous avez ?crit : > FWIW, I think PA (in tersm of the library) only uses xlib in one place. > I've done some tests with XCB and I can probably cook up a patch in a > little while. Sounds good. In the mean the Mozilla VLC plugin cannot use Pulse (and GLX). At least Firefox fails to call XInitThreads() (early enough)... -- R?mi Denis-Courmont http://www.remlab.net/ http://fi.linkedin.com/in/remidenis From remi at remlab.net Sat Jun 5 15:21:50 2010 From: remi at remlab.net (=?iso-8859-15?q?R=E9mi?= Denis-Courmont) Date: Sat, 5 Jun 2010 16:21:50 +0300 Subject: [vlc-devel] Tiny patch to treat rtsp-kasenna config variable as safe for untrusted callers In-Reply-To: <4BD85F5B.1030901@gregfarrell.org> References: <4BD85F5B.1030901@gregfarrell.org> Message-ID: <201006051621.51004.remi@remlab.net> Le mercredi 28 avril 2010 19:16:27 greg, vous avez ?crit : > Hi, > > I believe that the rtsp-kasenna option in the live555 module should > be considered safe for use by untrusted sources, for example, the > mozilla firefox plugin. > > I'd hazard that it was an oversight that it isn't. > > Attached patch applies against 1.0.5, it's only a one line change and > would allow rtsp-kasenna support in the mozilla plugin for one thing. Merged, thanks. Sorry for the delay. -- R?mi Denis-Courmont http://www.remlab.net/ http://fi.linkedin.com/in/remidenis From beauze.h at gmail.com Sat Jun 5 15:41:59 2010 From: beauze.h at gmail.com (Hugo Beauzee-Luyssen) Date: Sat, 5 Jun 2010 15:41:59 +0200 Subject: [vlc-devel] [Patch] Allow pausing using space in playlist mode In-Reply-To: <201006051604.39557.remi@remlab.net> References: <201006051604.39557.remi@remlab.net> Message-ID: 2010/6/5 R?mi Denis-Courmont : > Le vendredi 4 juin 2010 17:18:55 Hugo Beauzee-Luyssen, vous avez ?crit : >> When the playlist is in docked mode, it is impossible to pause the >> playback using the 'space' key, as the QAbstractItemView catches it. >> Though this is a standard behaviour of list, it is useless and >> prevents the user to pause its playback using space. >> This patch corrects it, by intercepting the key event and forwarding >> it to the basic QWidget key handler, if the space key is pressed >> without any modifiers, thus allowing multiple selection using space + >> ctrl/shift. > > The comments say 'otherwise' in plenty of places, but there are no else > statements. I find this suspicious. > Indeed, my bad. -- Hugo Beauz?e-Luyssen -------------- next part -------------- A non-text attachment was scrubbed... Name: 0001-Playlist-Allow-pausing-the-playback-using-space.patch Type: text/x-patch Size: 2616 bytes Desc: not available URL: From remi at remlab.net Sat Jun 5 15:55:43 2010 From: remi at remlab.net (=?iso-8859-15?q?R=E9mi?= Denis-Courmont) Date: Sat, 5 Jun 2010 16:55:43 +0300 Subject: [vlc-devel] [Patch] Allow pausing using space in playlist mode In-Reply-To: References: <201006051604.39557.remi@remlab.net> Message-ID: <201006051655.43508.remi@remlab.net> Le samedi 5 juin 2010 16:41:59 Hugo Beauzee-Luyssen, vous avez ?crit : > 2010/6/5 R?mi Denis-Courmont : > > Le vendredi 4 juin 2010 17:18:55 Hugo Beauzee-Luyssen, vous avez ?crit : > >> When the playlist is in docked mode, it is impossible to pause the > >> playback using the 'space' key, as the QAbstractItemView catches it. > >> Though this is a standard behaviour of list, it is useless and > >> prevents the user to pause its playback using space. > >> This patch corrects it, by intercepting the key event and forwarding > >> it to the basic QWidget key handler, if the space key is pressed > >> without any modifiers, thus allowing multiple selection using space + > >> ctrl/shift. > > > > The comments say 'otherwise' in plenty of places, but there are no else > > statements. I find this suspicious. > > Indeed, my bad. Merged, thanks -- R?mi Denis-Courmont http://www.remlab.net/ http://fi.linkedin.com/in/remidenis From ileoo at videolan.org Sat Jun 5 17:13:59 2010 From: ileoo at videolan.org (Ilkka Ollakka) Date: Sat, 5 Jun 2010 18:13:59 +0300 Subject: [vlc-devel] Updated patch for ogg/theora seeking In-Reply-To: References: Message-ID: <20100605151359.GA4973@linux-3azp> On Fri, Jun 04, 2010 at 07:11:42AM -0300, salsaman wrote: > Hi all, > please find attached an updated patch for ogg/theora seeking, which has been > approved by JB. > Please can somebody let me know when it has been applied. Hi, Few remarks > + /* gf: some frames need to be skipped after a seek */ > + bool b_skip_frame; > + gf: in comments relate to you I presume? I think those could be left out as you can use git blame to see who commited it etc? > + /* gf: need to skip some pages after a seek */ > + if ( p_block->i_flags & BLOCK_FLAG_PREROLL ) > + { > + p_sys->b_skip_frame = true; > + } Please try to keep codingstyle consistent inside files (expanding tabs and intend of {}). > /***************************************************************************** > * ogg.c : ogg stream demux module for vlc > ***************************************************************************** > - * Copyright (C) 2001-2007 the VideoLAN team > + * Copyright (C) 2001-2010 the VideoLAN team > * $Id$ > --- /dev/null > +++ b/modules/demux/oggseek.c > @@ -0,0 +1,844 @@ > +/***************************************************************************** > + * oggseek.c : ogg seeking functions for ogg demuxer vlc > + ***************************************************************************** > + * Copyright (C) 2008 - 2010 Gabriel Finch > + * > + * Authors: Gabriel Finch Does these codefiles originate from somewhere else that you have made in 2008? -- Ilkka Ollakka A New York City ordinance prohibits the shooting of rabbits from the rear of a Third Avenue street car -- if the car is in motion. -------------- next part -------------- A non-text attachment was scrubbed... Name: not available Type: application/pgp-signature Size: 490 bytes Desc: not available URL: From salsaman at gmail.com Sat Jun 5 18:54:05 2010 From: salsaman at gmail.com (salsaman) Date: Sat, 5 Jun 2010 13:54:05 -0300 Subject: [vlc-devel] Updated patch for ogg/theora seeking In-Reply-To: <20100605151359.GA4973@linux-3azp> References: <20100605151359.GA4973@linux-3azp> Message-ID: On Sat, Jun 5, 2010 at 12:13 PM, Ilkka Ollakka wrote: > On Fri, Jun 04, 2010 at 07:11:42AM -0300, salsaman wrote: >> Hi all, >> please find attached an updated patch for ogg/theora seeking, which has been >> approved by JB. > >> Please can somebody let me know when it has been applied. > > Hi, > > Few remarks > >> + ? ?/* gf: some frames need to be skipped after a seek */ >> + ? ?bool b_skip_frame; >> + > > gf: in comments relate to you I presume? I think those could be left out > as you can use git blame to see who commited it etc? > OK, I will remove the gf: and gf: end > >> + ? ?/* gf: need to skip some pages after a seek */ >> + ? ?if ( p_block->i_flags & BLOCK_FLAG_PREROLL ) >> + ? ? ?{ >> + ? ? p_sys->b_skip_frame = true; >> + ? ? ?} > > Please try to keep codingstyle consistent inside files (expanding tabs and > intend of {}). > I am sorry but emacs does this automatically. It would be a PITA to have to manually change everything (and probably I would miss something or mess up closing braces), unless you know a setting for emacs to change this. Otherwise feel free to re-indent my patches with whatever tool you are using. >> ?/***************************************************************************** >> ? * ogg.c : ogg stream demux module for vlc >> ? ***************************************************************************** >> - * Copyright (C) 2001-2007 the VideoLAN team >> + * Copyright (C) 2001-2010 the VideoLAN team >> ? * $Id$ > >> --- /dev/null >> +++ b/modules/demux/oggseek.c >> @@ -0,0 +1,844 @@ >> +/***************************************************************************** >> + * oggseek.c : ogg seeking functions for ogg demuxer vlc >> + ***************************************************************************** >> + * Copyright (C) 2008 - 2010 Gabriel Finch >> + * >> + * Authors: Gabriel Finch > > Does these codefiles originate from somewhere else that you have made in > 2008? > http://lives.svn.sourceforge.net/viewvc/lives/trunk/lives-plugins/plugins/decoders/ogg_theora_decoder.c Gabriel. From ileoo at videolan.org Sat Jun 5 20:23:28 2010 From: ileoo at videolan.org (Ilkka Ollakka) Date: Sat, 5 Jun 2010 21:23:28 +0300 Subject: [vlc-devel] Updated patch for ogg/theora seeking In-Reply-To: References: <20100605151359.GA4973@linux-3azp> Message-ID: <20100605182328.GA5512@linux-3azp> On Sat, Jun 05, 2010 at 01:54:05PM -0300, salsaman wrote: > I am sorry but emacs does this automatically. It would be a PITA to > have to manually change everything (and probably I would miss > something or mess up closing braces), unless you know a setting for > emacs to change this. Otherwise feel free to re-indent my patches with > whatever tool you are using. I don't use emacs myself, but maybe http://www.emacswiki.org/emacs/IndentingC helps littlebit? > http://lives.svn.sourceforge.net/viewvc/lives/trunk/lives-plugins/plugins/decoders/ogg_theora_decoder.c Ok, I would like that source to be mentioned as a place where you originally made it (not requirement of anykind from my part, just would be nice to mention). -- Ilkka Ollakka Dear Lord: I just want *___one* one-armed manager so I never have to hear "On the other hand", again. -------------- next part -------------- A non-text attachment was scrubbed... Name: not available Type: application/pgp-signature Size: 490 bytes Desc: not available URL: From fenrir at elivagar.org Sat Jun 5 20:32:18 2010 From: fenrir at elivagar.org (Laurent Aimar) Date: Sat, 05 Jun 2010 20:32:18 +0200 Subject: [vlc-devel] [PATCH] input : apply start time option immediately In-Reply-To: <1275463956.4c06091405148@imp.celeos.eu> References: <1275463956.4c06091405148@imp.celeos.eu> Message-ID: <1275762738.21962.3.camel@localhost> Hi, On Wed, 2010-06-02 at 09:32 +0200, S?bastien Escudier wrote: > This patch avoids to have a few frame of the beginning of the video. > Instead, the first frame will be the one at start-time option. > > So if someone with better knowledge of input thread can confirm this patch is ok > ? I don't think it is the right way to fix the issue. The Control() cannot be done here as the input is not yet completely loaded/setup. I think that changing MainLoop() to perform controls before demuxing data could work nicely and will avoid any breakages. -- fenrir From xtophe at chewa.net Sat Jun 5 21:54:28 2010 From: xtophe at chewa.net (Christophe Mutricy) Date: Sat, 5 Jun 2010 21:54:28 +0200 Subject: [vlc-devel] Updated patch for ogg/theora seeking In-Reply-To: References: <20100605151359.GA4973@linux-3azp> Message-ID: <20100605195428.GY16350@chewa.net> On Sat, Jun 05, 10 at 13:54 -0300, salsaman wrote: > I am sorry but emacs does this automatically. Then use extras/analyser/emacs.init -- Xtophe From jpeg at videolan.org Sun Jun 6 10:47:30 2010 From: jpeg at videolan.org (Jean-Philippe =?iso-8859-1?q?Andr=E9?=) Date: Sun, 6 Jun 2010 16:47:30 +0800 Subject: [vlc-devel] About #3353 In-Reply-To: <20100603190450.GA24239@videolan.org> References: <20100603190450.GA24239@videolan.org> Message-ID: <201006061647.30716.jpeg@videolan.org> On Friday 04 June 2010 03:04:50 Jean-Baptiste Kempf wrote: > Having .lua files would be cool, but adding a HACK this late is not a good > idea at all. > > Win32 installer can be fixd easily then. Yup. Actually, something weird happens here. If I build the win32 package myself, for 1.1, I get only .lua files, no .luac. But in the NB I find both versions. Anyway, here's a patch (actually, 3 of them: 0001-Packages-ship-only-luac-files.patch is for master, the 2 others are similar but for vlc-1.1). As it deals with buildsystem & packaging, I'm never quite sure if it's OK :-) NOTE: I have remarked that the Lua script "sd/appletrailers.lua" is in master and not in vlc-1.1. Is this wanted? Best, -- Jean-Philippe Andr? (jpeg) -------------- next part -------------- A non-text attachment was scrubbed... Name: 0001-Packages-ship-only-luac-files.patch Type: text/x-patch Size: 7254 bytes Desc: not available URL: -------------- next part -------------- A non-text attachment was scrubbed... Name: 0001-Packages-compile-all-lua-scripts-into-.luac.patch Type: text/x-patch Size: 2833 bytes Desc: not available URL: -------------- next part -------------- A non-text attachment was scrubbed... Name: 0002-Packages-ship-only-.luac-files.patch Type: text/x-patch Size: 4626 bytes Desc: not available URL: From ileoo at videolan.org Sun Jun 6 10:55:43 2010 From: ileoo at videolan.org (Ilkka Ollakka) Date: Sun, 6 Jun 2010 11:55:43 +0300 Subject: [vlc-devel] About #3353 In-Reply-To: <201006061647.30716.jpeg@videolan.org> References: <20100603190450.GA24239@videolan.org> <201006061647.30716.jpeg@videolan.org> Message-ID: <20100606085543.GA3918@linux-3azp> On Sun, Jun 06, 2010 at 04:47:30PM +0800, Jean-Philippe Andr? wrote: > NOTE: > I have remarked that the Lua script "sd/appletrailers.lua" is in master and > not in vlc-1.1. Is this wanted? Yes, I didn't backport it in purpose, as I made it pretty recently and 1.1 was allready in feature freeze stage that time. Also I'm not sure it handles everything correctly yet. -- Ilkka Ollakka It has been said that man is a rational animal. All my life I have been searching for evidence which could support this. -- Bertrand Russell -------------- next part -------------- A non-text attachment was scrubbed... Name: not available Type: application/pgp-signature Size: 490 bytes Desc: not available URL: From jb at videolan.org Sun Jun 6 15:11:27 2010 From: jb at videolan.org (Jean-Baptiste Kempf) Date: Sun, 6 Jun 2010 15:11:27 +0200 Subject: [vlc-devel] About #3353 In-Reply-To: <201006061647.30716.jpeg@videolan.org> References: <20100603190450.GA24239@videolan.org> <201006061647.30716.jpeg@videolan.org> Message-ID: <20100606131127.GA22752@videolan.org> On Sun, Jun 06, 2010 at 04:47:30PM +0800, Jean-Philippe Andr? wrote : > Anyway, here's a patch (actually, 3 of them: > 0001-Packages-ship-only-luac-files.patch is for master, > the 2 others are similar but for vlc-1.1). Then you should apply them. Best Regards, -- Jean-Baptiste Kempf http://www.jbkempf.com/ From remi at remlab.net Sun Jun 6 20:47:59 2010 From: remi at remlab.net (=?iso-8859-15?q?R=E9mi?= Denis-Courmont) Date: Sun, 6 Jun 2010 21:47:59 +0300 Subject: [vlc-devel] About #3353 In-Reply-To: <201006061647.30716.jpeg@videolan.org> References: <20100603190450.GA24239@videolan.org> <201006061647.30716.jpeg@videolan.org> Message-ID: <201006062148.00020.remi@remlab.net> Le dimanche 6 juin 2010 11:47:30 Jean-Philippe Andr?, vous avez ?crit : > On Friday 04 June 2010 03:04:50 Jean-Baptiste Kempf wrote: > > Having .lua files would be cool, but adding a HACK this late is not a > > good idea at all. > > > > Win32 installer can be fixd easily then. > > Yup. > Actually, something weird happens here. If I build the win32 package > myself, for 1.1, I get only .lua files, no .luac. But in the NB I find > both versions. > > Anyway, here's a patch (actually, 3 of them: > 0001-Packages-ship-only-luac-files.patch is for master, > the 2 others are similar but for vlc-1.1). > As it deals with buildsystem & packaging, I'm never quite sure if it's OK > :-) 1/ I fail to see what the .vlt change does in this patch set. 2/ EXTRA_DIST is not allowed in conditional code. This is non-sense. -- R?mi Denis-Courmont http://www.remlab.net/ http://fi.linkedin.com/in/remidenis From atburrow at gmail.com Mon Jun 7 06:02:25 2010 From: atburrow at gmail.com (Austin Burrow) Date: Sun, 6 Jun 2010 23:02:25 -0500 Subject: [vlc-devel] Question about input_item_node_* functions Message-ID: <002801cb05f6$3e9bc240$bbd346c0$@com> Hello everyone, I had a quick question about the workings of input_item_node_* functions. Looking through the documentation and some code, I've pretty much figured out how to make an item node, but I was wondering how to remove an item from the actual list after you've done a call to input_item_node_PostAndDelete. I've looked around and found input_item_node_Delete, but it looks like that just deletes my locally created list before (or after) it was posted internally. For example, the upnp_intel SD module creates a list of UPnP servers and their sub-items, but when the UPnP servers rebroadcast their files, some files could be out of date but they aren't being removed from the tree list. Knowing the workings of input_item_node_* would help me fix this bug. Thanks, Austin -------------- next part -------------- An HTML attachment was scrubbed... URL: From ileoo at videolan.org Mon Jun 7 08:14:03 2010 From: ileoo at videolan.org (Ilkka Ollakka) Date: Mon, 7 Jun 2010 09:14:03 +0300 Subject: [vlc-devel] Updated patch for ogg/theora seeking In-Reply-To: References: <20100605151359.GA4973@linux-3azp> <20100605195428.GY16350@chewa.net> Message-ID: <20100607061402.GA4860@linux-3azp> On Sun, Jun 06, 2010 at 03:43:00PM -0300, salsaman wrote: > Updated patch. Please let me know if it is OK now. > Gabriel. Hi, Have to say, I don't know ogg that well, that I could really comment on code content that much (but looks ok ). Still few indent issues here and there, but nothing major. Like here: > @@ -323,15 +263,35 @@ static int Demux( demux_t * p_demux ) > /* > * Demux an ogg page from the stream > */ > - if( Ogg_ReadPage( p_demux, &oggpage ) != VLC_SUCCESS ) > + if( Ogg_ReadPage( p_demux ) != VLC_SUCCESS ) > return 0; /* EOF */ Here: > + /* if any streams have b_ignore_packets, don't decode anything > + * except headers */ > + for( i_stream = 0; i_stream < p_sys->i_streams; i_stream++ ) > + { > + logical_stream_t *p_stream = p_sys->pp_stream[i_stream]; > + > + if ( p_stream->b_ignore_packets ) > + { > + b_ignore = true; > + } > + > + /* check also if we are pre-rolling as the result of a search */ > + if ( p_stream->i_skip_frames > 0 ) > + { > + b_skipping = true; > + } > + > + } Here: > - if( ogg_stream_pagein( &p_stream->os, &oggpage ) != 0 ) > + if( ogg_stream_pagein( &p_stream->os, &p_sys->current_page ) != 0 ) > + { > + msg_Warn ( p_demux, "Got incomplete page" ); > continue; > + } > + > + if ( p_sys->i_total_length > 0 ) > + { > + if ( p_stream->fmt.i_codec == VLC_CODEC_THEORA ) > + { > + i_gpos = ogg_page_granulepos( &p_sys->current_page ); > + oggseek_theora_index_entry_add ( p_stream, i_gpos, p_sys->i_input_position ); > + } > + } > + > } Few comments still have those gf:-tags > + /* gf: after a seek we only ignore all packets which end on the first page, > + * unless we are seeking to the very first frame */ > + > + p_stream->b_ignore_packets = false; > + Indent error > @@ -673,7 +850,7 @@ static void Ogg_DecodePacket( demux_t *p_demux, > p_stream->p_headers = realloc( p_stream->p_headers, p_stream->i_headers ); > if( p_stream->p_headers ) > { > - memcpy( p_stream->p_headers + p_stream->i_headers - p_oggpacket->bytes, > + memcpy( (unsigned char *)p_stream->p_headers + p_stream->i_headers - p_oggpacket->bytes, > p_oggpacket->packet, p_stream->i_headers ); > } > else > @@ -791,6 +968,15 @@ static void Ogg_DecodePacket( demux_t *p_demux, Here too > + /* may need to preroll video frames after a seek */ > + if ( p_stream->i_skip_frames > 0 ) > + { > + p_block->i_flags |= BLOCK_FLAG_PREROLL; > + P_stream->i_skip_frames--; > + } and here > + while( Ogg_ReadPage( p_demux ) == VLC_SUCCESS ) > + { > + if( ogg_page_bos( &p_ogg->current_page ) ) > + { > + > + > + /* All is wonderful in our fine fine little world. > + * We found the beginning of our first logical stream. */ > + while( ogg_page_bos( &p_ogg->current_page ) ) > + { > logical_stream_t *p_stream; Seems like indent error here also, and forgotten gf-tag > + /* gf: initialise kframe index */ > + p_stream->idx=NULL; > + /* gf: end */ > + > + > /* Try first to reuse an old ES */ > if( p_old_stream && Indent error > @@ -1417,6 +1621,29 @@ static int Ogg_BeginningOfStream( demux_t *p_demux ) > Ogg_LogicalStreamDelete( p_demux, p_ogg->p_old_stream ); > p_ogg->p_old_stream = NULL; > } > + > + > + /* get total frame count for video stream; we will need this for seeking */ > + p_ogg->i_total_frames = 0; > + > + if ( p_ogg->i_total_length > 0 ) > + { > + > + for( i_stream = 0 ; i_stream < p_ogg->i_streams; i_stream++ ) > + { Similar indent issues still in few places, not sure if the extras emacs stuff is out of date/broken in that sense or if you just forgot to reindent those files. -- Ilkka Ollakka For a man to truly understand rejection, he must first be ignored by a cat. -------------- next part -------------- A non-text attachment was scrubbed... Name: not available Type: application/pgp-signature Size: 490 bytes Desc: not available URL: From dominique at leuenberger.net Mon Jun 7 10:07:24 2010 From: dominique at leuenberger.net (Dominique Leuenberger) Date: Mon, 07 Jun 2010 11:07:24 +0300 Subject: [vlc-devel] [PACKAGERS] Tag 1.1.0-rc2 In-Reply-To: <20100603234641.GA12315@videolan.org> References: <20100603134551.5A800E83CA@albiero.videolan.org> <20100603150853.GA12848@videolan.org> <20100603234641.GA12315@videolan.org> Message-ID: <20100607110724.20472lz93jnl2ri8@webmail.leuenberger.net> Quoting Jean-Baptiste Kempf : > On Thu, Jun 03, 2010 at 05:08:53PM +0200, Jean-Baptiste Kempf wrote : >> ftp://ftp.videolan.org/pub/testing/vlc-1.1.0-rc2/vlc-1.1.0-rc2.tar.bz2 > > As we are getting closer to the release (next week, probably), I > STRONGLY recommand to linux/Unix packagers to test this package quite soon > and test it (or upload to your testing repo) and complain now about > issues you might have. Do it before it is too late... > > Many many thanks, j-b, thanks for the heads-up here. I added to -rc2 tarball to my build system for openSUSE and it all went through just fine, just as with RC1. Maybe a small heads up on what new build deps we should add to the new version would be great: like what new things since 1.0.6 became optional dependencies for added feature set? Dominique -------------- next part -------------- A non-text attachment was scrubbed... Name: not available Type: application/pgp-signature Size: 189 bytes Desc: PGP Digital Signature URL: From kwizart at gmail.com Mon Jun 7 12:49:17 2010 From: kwizart at gmail.com (Nicolas Chauvet) Date: Mon, 7 Jun 2010 12:49:17 +0200 Subject: [vlc-devel] [PACKAGERS] Tag 1.1.0-rc2 In-Reply-To: <20100603234641.GA12315@videolan.org> References: <20100603134551.5A800E83CA@albiero.videolan.org> <20100603150853.GA12848@videolan.org> <20100603234641.GA12315@videolan.org> Message-ID: 2010/6/4 Jean-Baptiste Kempf : > On Thu, Jun 03, 2010 at 05:08:53PM +0200, Jean-Baptiste Kempf wrote : >> ftp://ftp.videolan.org/pub/testing/vlc-1.1.0-rc2/vlc-1.1.0-rc2.tar.bz2 Hi, 3 Issues: 1/ vlc -rc2 is crashing with me. (core dump) I'm trying to reproduce on another system. That was not the case with -pre3. 2/ Cache generation failure doesn't need to fail the build: Patch from rdieter at fedoraproject.org http://cvs.rpmfusion.org/viewvc/rpms/vlc/devel/?root=free But that's still strange that if a module fails, then it makes the cache generation to return an error. Also, that rather late in the development process, but I'm not satisfied with the cache dir in located in _prefix/lib It should be better in /var/cache/vlc. And in case there is two versions installed in parallels (such as lib32 and lib64 version) the name-space have to be different. I'm still trying to figure out. 3/There is a problem *nix system as the desktop icons (either png xpm) need to be named vlc.{xpm,png} as referenced in the desktop file (without extension). so the scale need to be removed from the name. (and the files need to be moved to a subdir in the git source repository). It means: From: /usr/share/icons/hicolor/128x128/apps/vlc128x128-christmas.png /usr/share/icons/hicolor/128x128/apps/vlc128x128.png /usr/share/icons/hicolor/16x16/apps/vlc16x16.png /usr/share/icons/hicolor/16x16/apps/vlc16x16.xpm /usr/share/icons/hicolor/256x256/apps/vlc256x256.png /usr/share/icons/hicolor/32x32/apps/vlc32x32-christmas.xpm /usr/share/icons/hicolor/32x32/apps/vlc32x32.png /usr/share/icons/hicolor/32x32/apps/vlc32x32.xpm /usr/share/icons/hicolor/48x48/apps/vlc48x48-christmas.png /usr/share/icons/hicolor/48x48/apps/vlc48x48.png To: /usr/share/icons/hicolor/128x128/apps/vlc-christmas.png /usr/share/icons/hicolor/128x128/apps/vlc.png /usr/share/icons/hicolor/16x16/apps/vlc.png /usr/share/icons/hicolor/16x16/apps/vlc.xpm /usr/share/icons/hicolor/256x256/apps/vlc.png /usr/share/icons/hicolor/32x32/apps/vlc-christmas.xpm /usr/share/icons/hicolor/32x32/apps/vlc.png /usr/share/icons/hicolor/32x32/apps/vlc.xpm /usr/share/icons/hicolor/48x48/apps/vlc-christmas.png /usr/share/icons/hicolor/48x48/apps/vlc.png Thx Nicolas (kwizart) From salsaman at gmail.com Mon Jun 7 13:33:01 2010 From: salsaman at gmail.com (salsaman) Date: Mon, 7 Jun 2010 08:33:01 -0300 Subject: [vlc-devel] Updated patch for ogg/theora seeking In-Reply-To: <20100607061402.GA4860@linux-3azp> References: <20100605151359.GA4973@linux-3azp> <20100605195428.GY16350@chewa.net> <20100607061402.GA4860@linux-3azp> Message-ID: http://lives.sourceforge.net https://www.ohloh.net/accounts/salsaman On Mon, Jun 7, 2010 at 3:14 AM, Ilkka Ollakka wrote: > On Sun, Jun 06, 2010 at 03:43:00PM -0300, salsaman wrote: > > Updated patch. Please let me know if it is OK now. > > > Gabriel. > > Hi, > > Have to say, I don't know ogg that well, that I could really comment on > code content that much (but looks ok ). Still few indent issues here and > there, but nothing major. > > Like here: > > @@ -323,15 +263,35 @@ static int Demux( demux_t * p_demux ) > > /* > > * Demux an ogg page from the stream > > */ > > - if( Ogg_ReadPage( p_demux, &oggpage ) != VLC_SUCCESS ) > > + if( Ogg_ReadPage( p_demux ) != VLC_SUCCESS ) > > return 0; /* EOF */ > > That is not my code, so I don't know why the indentation changed. > > Here: > > > + /* if any streams have b_ignore_packets, don't decode anything > > + * except headers */ > > + for( i_stream = 0; i_stream < p_sys->i_streams; i_stream++ ) > > + { > > + logical_stream_t *p_stream = p_sys->pp_stream[i_stream]; > > + > > + if ( p_stream->b_ignore_packets ) > > + { > > + b_ignore = true; > > + } > > + > > + /* check also if we are pre-rolling as the result of a search */ > > + if ( p_stream->i_skip_frames > 0 ) > > + { > > + b_skipping = true; > > + } > > + > > + } > > OK. Looks like I missed the closing brace. > > Here: > > > - if( ogg_stream_pagein( &p_stream->os, &oggpage ) != 0 ) > > + if( ogg_stream_pagein( &p_stream->os, &p_sys->current_page ) > != 0 ) > > + { > > + msg_Warn ( p_demux, "Got incomplete page" ); > > continue; > > + } > > + > > + if ( p_sys->i_total_length > 0 ) > > + { > > + if ( p_stream->fmt.i_codec == VLC_CODEC_THEORA ) > > + { > > + i_gpos = ogg_page_granulepos( &p_sys->current_page ); > > + oggseek_theora_index_entry_add ( p_stream, i_gpos, > p_sys->i_input_position ); > > + } > > + } > > + > > } > > What is the problem there ? > > Few comments still have those gf:-tags > > > + /* gf: after a seek we only ignore all packets which end on the > first page, > > + * unless we are seeking to the very first frame */ > > + > > + p_stream->b_ignore_packets = false; > > + > > Yes, you are right, I am sorry I must have overlooked them when I was trying various things with the .emacs file. > > Indent error > > > @@ -673,7 +850,7 @@ static void Ogg_DecodePacket( demux_t *p_demux, > > p_stream->p_headers = realloc( p_stream->p_headers, > p_stream->i_headers ); > > if( p_stream->p_headers ) > > { > > - memcpy( p_stream->p_headers + p_stream->i_headers - > p_oggpacket->bytes, > > + memcpy( (unsigned char *)p_stream->p_headers + > p_stream->i_headers - p_oggpacket->bytes, > > p_oggpacket->packet, p_stream->i_headers ); > > } > > else > > @@ -791,6 +968,15 @@ static void Ogg_DecodePacket( demux_t *p_demux, > > Again, that is not my code, so I don't know why it changed, maybe when I was testing the .emacs files. > Here too > > > + /* may need to preroll video frames after a seek */ > > + if ( p_stream->i_skip_frames > 0 ) > > + { > > + p_block->i_flags |= BLOCK_FLAG_PREROLL; > > + P_stream->i_skip_frames--; > > + } > > That one looks fine in the code, maybe it is just the way the patch is formatted ? > and here > > > + while( Ogg_ReadPage( p_demux ) == VLC_SUCCESS ) > > + { > > + if( ogg_page_bos( &p_ogg->current_page ) ) > > + { > > + > > + > > + /* All is wonderful in our fine fine little world. > > + * We found the beginning of our first logical stream. */ > > + while( ogg_page_bos( &p_ogg->current_page ) ) > > + { > > logical_stream_t *p_stream; > > OK, again not my code, but maybe I was testing the indentation there. > Seems like indent error here also, and forgotten gf-tag > > > + /* gf: initialise kframe index */ > > + p_stream->idx=NULL; > > + /* gf: end */ > > + > > + > > /* Try first to reuse an old ES */ > > if( p_old_stream && > > OK, I removed the gf-tag, but I don't see any indent error in the original. > Indent error > > @@ -1417,6 +1621,29 @@ static int Ogg_BeginningOfStream( demux_t *p_demux > ) > > Ogg_LogicalStreamDelete( p_demux, p_ogg->p_old_stream ); > > p_ogg->p_old_stream = NULL; > > } > > + > > + > > + /* get total frame count for video stream; we will need this for > seeking */ > > + p_ogg->i_total_frames = 0; > > + > > + if ( p_ogg->i_total_length > 0 ) > > + { > > + > > + for( i_stream = 0 ; i_stream < p_ogg->i_streams; i_stream++ ) > > + { > > Similar indent issues still in few places, not sure if the extras emacs > stuff is out of date/broken in that sense or if you just forgot to > reindent those files. > > OK, it's not an indent error, but I think there is a white-space error, as I just went through pressing tab. I will fix that. BTW, The extras/emacs stuff was not working. It did not do the opening brace 0 indent properly. In the end I just added a line for the 0 brace indent to my .emacs file. (I tried combining the two things together but it did not work.) Regards, Gabriel. -------------- next part -------------- An HTML attachment was scrubbed... URL: From remi at remlab.net Mon Jun 7 13:41:19 2010 From: remi at remlab.net (=?UTF-8?Q?R=C3=A9mi_Denis-Courmont?=) Date: Mon, 07 Jun 2010 13:41:19 +0200 Subject: [vlc-devel] [PACKAGERS] Tag 1.1.0-rc2 In-Reply-To: References: <20100603134551.5A800E83CA@albiero.videolan.org> <20100603150853.GA12848@videolan.org> <20100603234641.GA12315@videolan.org> Message-ID: <90c3d4fcc187bad664d8507679dc0ca6@chewa.net> On Mon, 7 Jun 2010 12:49:17 +0200, Nicolas Chauvet wrote: > 1/ vlc -rc2 is crashing with me. (core dump) I'm trying to reproduce > on another system. > That was not the case with -pre3. That looks like a buggy taglib in Fedora. > 2/ Cache generation failure doesn't need to fail the build: Something is really wrong with your build if cache generation fails. It actually seems like a safety feature to me. > But that's still strange that if a module fails, then it makes the > cache generation to return an error. Generally, if a module fails, VLC crashes. Again, that's why I find it best to detect the problem before it hits customers. > Also, that rather late in the development process, but I'm not > satisfied with the cache dir in located in _prefix/lib gconv does the same with its plugins. > It should be better in /var/cache/vlc. Not really, no. It's solely dependent on the content of lib, so it's fine there (as with gconv). Second, it requires a 1:1 mapping to directories, so /var/cache simply would not work. > And in case there is two > versions installed in parallels (such as lib32 and lib64 version) the > name-space have to be different. > I'm still trying to figure out. That works out of the box with the current scheme - the cache is stored in the same directory as the plugins themselves. -- R?mi Denis-Courmont http://www.remlab.net http://fi.linkedin.com/in/remidenis From gozer at progrock.com Mon Jun 7 13:42:18 2010 From: gozer at progrock.com (gozer at progrock.com) Date: Mon, 7 Jun 2010 04:42:18 -0700 Subject: [vlc-devel] [PACKAGERS] Tag 1.1.0-rc2 Message-ID: <20100607044218.4DEF786@resin09.mta.everyone.net> Hi all, additionnaly I have some problems generating on windows (cygwin based), because some files are missing: - for compiling: ./include/vlc_windows_interfaces.h ./projects/activex/position.h - for make package-win32: ./extras/package/win32/languages/bengali.nsh ./extras/package/win32/languages/brazilian_portuguese.nsh ./extras/package/win32/languages/bulgarian.nsh ./extras/package/win32/languages/catalan.nsh ./extras/package/win32/languages/dutch.nsh ./extras/package/win32/languages/finnish.nsh ./extras/package/win32/languages/german.nsh ./extras/package/win32/languages/hungarian.nsh ./extras/package/win32/languages/italian.nsh ./extras/package/win32/languages/japanese.nsh ./extras/package/win32/languages/occitan.nsh ./extras/package/win32/languages/polish.nsh ./extras/package/win32/languages/punjabi.nsh ./extras/package/win32/languages/romanian.nsh ./extras/package/win32/languages/schinese.nsh ./extras/package/win32/languages/slovak.nsh ./extras/package/win32/languages/slovenian.nsh ./extras/package/win32/languages/sorani.nsh ./extras/package/win32/languages/spanish.nsh ./share/lua/extensions/imdb.lua ./share/lua/extensions/README.txt vlc-1.1.0-rc2 is also crashing for me (playlist/preferences->shortcut/mp4 and mov) but it may be linked to my win32 'contribs' and the use of gcc-3 -- Eric Lassauge #lassauge [at] users {dot} sf {dot} net# --- kwizart at gmail.com wrote: From: Nicolas Chauvet To: Mailing list for VLC media player developers Subject: Re: [vlc-devel] [PACKAGERS] Tag 1.1.0-rc2 Date: Mon, 7 Jun 2010 12:49:17 +0200 2010/6/4 Jean-Baptiste Kempf : > On Thu, Jun 03, 2010 at 05:08:53PM +0200, Jean-Baptiste Kempf wrote : >> ftp://ftp.videolan.org/pub/testing/vlc-1.1.0-rc2/vlc-1.1.0-rc2.tar.bz2 Hi, 3 Issues: 1/ vlc -rc2 is crashing with me. (core dump) I'm trying to reproduce on another system. That was not the case with -pre3. 2/ Cache generation failure doesn't need to fail the build: Patch from rdieter at fedoraproject.org http://cvs.rpmfusion.org/viewvc/rpms/vlc/devel/?root=free But that's still strange that if a module fails, then it makes the cache generation to return an error. Also, that rather late in the development process, but I'm not satisfied with the cache dir in located in _prefix/lib It should be better in /var/cache/vlc. And in case there is two versions installed in parallels (such as lib32 and lib64 version) the name-space have to be different. I'm still trying to figure out. 3/There is a problem *nix system as the desktop icons (either png xpm) need to be named vlc.{xpm,png} as referenced in the desktop file (without extension). so the scale need to be removed from the name. (and the files need to be moved to a subdir in the git source repository). It means: From: /usr/share/icons/hicolor/128x128/apps/vlc128x128-christmas.png /usr/share/icons/hicolor/128x128/apps/vlc128x128.png /usr/share/icons/hicolor/16x16/apps/vlc16x16.png /usr/share/icons/hicolor/16x16/apps/vlc16x16.xpm /usr/share/icons/hicolor/256x256/apps/vlc256x256.png /usr/share/icons/hicolor/32x32/apps/vlc32x32-christmas.xpm /usr/share/icons/hicolor/32x32/apps/vlc32x32.png /usr/share/icons/hicolor/32x32/apps/vlc32x32.xpm /usr/share/icons/hicolor/48x48/apps/vlc48x48-christmas.png /usr/share/icons/hicolor/48x48/apps/vlc48x48.png To: /usr/share/icons/hicolor/128x128/apps/vlc-christmas.png /usr/share/icons/hicolor/128x128/apps/vlc.png /usr/share/icons/hicolor/16x16/apps/vlc.png /usr/share/icons/hicolor/16x16/apps/vlc.xpm /usr/share/icons/hicolor/256x256/apps/vlc.png /usr/share/icons/hicolor/32x32/apps/vlc-christmas.xpm /usr/share/icons/hicolor/32x32/apps/vlc.png /usr/share/icons/hicolor/32x32/apps/vlc.xpm /usr/share/icons/hicolor/48x48/apps/vlc-christmas.png /usr/share/icons/hicolor/48x48/apps/vlc.png Thx Nicolas (kwizart) _______________________________________________ vlc-devel mailing list To unsubscribe or modify your subscription options: http://mailman.videolan.org/listinfo/vlc-devel _____________________________________________________________ For the best in Progressive Rock on the internet, check out PROGROCK.COM! http://www.progrock.com From cmasus at kth.se Sat Jun 5 11:59:24 2010 From: cmasus at kth.se (Christian) Date: Sat, 05 Jun 2010 11:59:24 +0200 Subject: [vlc-devel] Bug fix to http interface in VLC Message-ID: Hi Could someone please commit the following bug fix to VLC. There has been a bug for a while in the standard VLC http interface. As I understand it VLC_OBJECT_VLC was replaced with VLC_OBJECT_LIBVLC. But that change wasn't made for the http interface. So, can someone please commit a change on the file [dir to vlc]/http/requests/status.xml Here is the diff between the old and the fixed version: diff status.xml status.xml.old 104c104 < --- > And with context output format: diff -c status.xml status.xml.old *** status.xml 2010-05-25 19:20:06.098078705 +0200 --- status.xml.old 2010-05-25 19:18:41.440079120 +0200 *************** *** 101,107 **** ! --- 101,107 ---- ! I am developing a remote for VLC using this interface. So I would like this functionality to be available to everyone. Can someone please commit this change? I have tested the change in both linux and windows and it works fine. Can someone also confirm to me that this change has been committed, so that I know that it will be available in the next VLC version (I guess the next one will be 1.0.7). Thanks for the great work with the worlds best media player :). Best regards /Christian From jakob.leben at gmail.com Mon Jun 7 13:57:01 2010 From: jakob.leben at gmail.com (Jakob Leben) Date: Mon, 7 Jun 2010 13:57:01 +0200 Subject: [vlc-devel] Question about input_item_node_* functions In-Reply-To: <002801cb05f6$3e9bc240$bbd346c0$@com> References: <002801cb05f6$3e9bc240$bbd346c0$@com> Message-ID: On Mon, Jun 7, 2010 at 6:02 AM, Austin Burrow wrote: > I had a quick question about the workings of input_item_node_* > functions. Looking through the documentation and some code, I've pretty > much figured out how to make an item node, but I was wondering how to remove > an item from the actual list after you've done a call to > input_item_node_PostAndDelete. I've looked around and found > input_item_node_Delete, but it looks like that just deletes my locally > created list before (or after) it was posted internally. > > For example, the upnp_intel SD module creates a list of UPnP servers and > their sub-items, but when the UPnP servers rebroadcast their files, some > files could be out of date but they aren't being removed from the tree > list. Knowing the workings of input_item_node_* would help me fix this bug. > Hi, Your observation about input_item_node_X is correct. An "input item node" with all it's children can either be posted and deleted or only deleted. After that, it is freed and inaccessible. Please note that input_item_node_t is not meant for continuous storage of information but only to pass information from a Playlist Demuxer to the VLC core. Usage of it for SD is anomalous anyway. SDs should instead use services_discovery_AddItem / services_discovery_RemoveItem. However, that only allows for two levels of item hierarchy, which is the reason for some SDs to go for other means of publishing their items. Anyway, if a SD needs to "un-publish" an item it has published, it should have internally (by it's own means and data structures) stored a reference to the input_item_t it has published and then call services_discovery_RemoveItem with that item as an argument. Best regards, J.L. -------------- next part -------------- An HTML attachment was scrubbed... URL: From salsaman at gmail.com Mon Jun 7 13:58:20 2010 From: salsaman at gmail.com (salsaman) Date: Mon, 7 Jun 2010 08:58:20 -0300 Subject: [vlc-devel] Updated patch for ogg/theora seeking In-Reply-To: References: <20100605151359.GA4973@linux-3azp> <20100605195428.GY16350@chewa.net> <20100607061402.GA4860@linux-3azp> Message-ID: OK, I hope this fixes all of the formatting problems now. You can test the patch by downloading for example, Elephants Dream: http://streams.videolan.org/streams-videolan/ogg/elephantsdream-with-subtitles.ogg Then either click on the timeline at the bottom, or enter a "Goto" time. Without the patch you will see that the time length at the bottom is just an estimate, and there are frame artifacts when you click on the timeline. With the patch you will see that the time length is exact and all frames are reproduced perfectly. You can even slide the time position left and right. Regards, Gabriel. http://lives.sourceforge.net https://www.ohloh.net/accounts/salsaman -------------- next part -------------- An HTML attachment was scrubbed... URL: From vincentlecours at theofan.net Mon Jun 7 16:15:08 2010 From: vincentlecours at theofan.net (Vincent Lecours) Date: Mon, 7 Jun 2010 16:15:08 +0200 Subject: [vlc-devel] Not able to build current git on Mac OS X 10.6 Message-ID: Hi, Is someone able to compile the code from the current git repository on Mac OS X 10.6.3? Each time I try to build the code I always have these errors: OBJC libmacosx_plugin_la-vout.lo vout.m: In function ?-[VLCVoutView voutSizeForFactor:]?: vout.m:359: error: ?vout_thread_t? has no member named ?render? vout.m:359: error: ?vout_thread_t? has no member named ?render? vout.m:360: error: ?vout_thread_t? has no member named ?render? vout.m:362: error: ?vout_thread_t? has no member named ?render? vout.m:362: error: ?vout_thread_t? has no member named ?render? vout.m:365: error: ?vout_thread_t? has no member named ?render? vout.m:369: error: ?vout_thread_t? has no member named ?render? vout.m:370: error: ?vout_thread_t? has no member named ?render? vout.m:371: error: ?vout_thread_t? has no member named ?render? vout.m: In function ?-[VLCVoutView scaleWindowWithFactor:animate:]?: vout.m:380: error: ?vout_thread_t? has no member named ?b_fullscreen? vout.m:410: error: ?vout_thread_t? has no member named ?i_changes? vout.m:410: error: ?VOUT_SIZE_CHANGE? undeclared (first use in this function) vout.m:410: error: (Each undeclared identifier is reported only once vout.m:410: error: for each function it appears in.) vout.m: In function ?-[VLCVoutView mouseMoved:]?: vout.m:651: warning: implicit declaration of function ?vout_PlacePicture? vout.m:655: error: ?vout_thread_t? has no member named ?render? vout.m:659: error: ?vout_thread_t? has no member named ?render? vout.m:663: error: ?vout_thread_t? has no member named ?render? vout.m: In function ?+[VLCVoutView voutView:subView:frame:]?: vout.m:743: error: ?vout_thread_t? has no member named ?b_fullscreen? vout.m: In function ?-[VLCDetachedVoutView manage]?: vout.m:855: error: ?vout_thread_t? has no member named ?b_fullscreen? vout.m: In function ?-[VLCDetachedVoutView scaleWindowWithFactor:animate:]?: vout.m:886: error: ?vout_thread_t? has no member named ?b_fullscreen? vout.m: In function ?-[VLCVoutWindow initMainThread:]?: vout.m:1037: error: ?vout_thread_t? has no member named ?i_window_height? vout.m:1038: error: ?vout_thread_t? has no member named ?i_window_width? make[6]: *** [libmacosx_plugin_la-vout.lo] Error 1 make[5]: *** [all] Error 2 make[4]: *** [all-recursive] Error 1 make[3]: *** [all] Error 2 make[2]: *** [all-recursive] Error 1 make[1]: *** [all-recursive] Error 1 make: *** [all] Error 2 According to other posts on this list a change on May 26th or around this date made the code impossible to build on a Mac. Is this a known bug? Thanks, Vincent Lecours -------------- next part -------------- An HTML attachment was scrubbed... URL: From yvon.thoraval at gmail.com Mon Jun 7 16:53:25 2010 From: yvon.thoraval at gmail.com (Yvon Thoraval) Date: Mon, 7 Jun 2010 16:53:25 +0200 Subject: [vlc-devel] Not able to build current git on Mac OS X 10.6 In-Reply-To: References: Message-ID: Why not building "Lunettes" ? It's time consuming but it works great ! Yvon 2010/6/7 Vincent Lecours > Hi, > > Is someone able to compile the code from the current git repository on Mac > OS X 10.6.3? Each time I try to build the code I always have these errors: > > OBJC libmacosx_plugin_la-vout.lo > vout.m: In function ?-[VLCVoutView voutSizeForFactor:]?: > vout.m:359: error: ?vout_thread_t? has no member named ?render? > vout.m:359: error: ?vout_thread_t? has no member named ?render? > vout.m:360: error: ?vout_thread_t? has no member named ?render? > vout.m:362: error: ?vout_thread_t? has no member named ?render? > vout.m:362: error: ?vout_thread_t? has no member named ?render? > vout.m:365: error: ?vout_thread_t? has no member named ?render? > vout.m:369: error: ?vout_thread_t? has no member named ?render? > vout.m:370: error: ?vout_thread_t? has no member named ?render? > vout.m:371: error: ?vout_thread_t? has no member named ?render? > vout.m: In function ?-[VLCVoutView scaleWindowWithFactor:animate:]?: > vout.m:380: error: ?vout_thread_t? has no member named ?b_fullscreen? > vout.m:410: error: ?vout_thread_t? has no member named ?i_changes? > vout.m:410: error: ?VOUT_SIZE_CHANGE? undeclared (first use in this > function) > vout.m:410: error: (Each undeclared identifier is reported only once > vout.m:410: error: for each function it appears in.) > vout.m: In function ?-[VLCVoutView mouseMoved:]?: > vout.m:651: warning: implicit declaration of function ?vout_PlacePicture? > vout.m:655: error: ?vout_thread_t? has no member named ?render? > vout.m:659: error: ?vout_thread_t? has no member named ?render? > vout.m:663: error: ?vout_thread_t? has no member named ?render? > vout.m: In function ?+[VLCVoutView voutView:subView:frame:]?: > vout.m:743: error: ?vout_thread_t? has no member named ?b_fullscreen? > vout.m: In function ?-[VLCDetachedVoutView manage]?: > vout.m:855: error: ?vout_thread_t? has no member named ?b_fullscreen? > vout.m: In function ?-[VLCDetachedVoutView > scaleWindowWithFactor:animate:]?: > vout.m:886: error: ?vout_thread_t? has no member named ?b_fullscreen? > vout.m: In function ?-[VLCVoutWindow initMainThread:]?: > vout.m:1037: error: ?vout_thread_t? has no member named ?i_window_height? > vout.m:1038: error: ?vout_thread_t? has no member named ?i_window_width? > make[6]: *** [libmacosx_plugin_la-vout.lo] Error 1 > make[5]: *** [all] Error 2 > make[4]: *** [all-recursive] Error 1 > make[3]: *** [all] Error 2 > make[2]: *** [all-recursive] Error 1 > make[1]: *** [all-recursive] Error 1 > make: *** [all] Error 2 > > According to other posts on this list a change on May 26th or around this > date made the code impossible to build on a Mac. Is this a known bug? > > Thanks, > > Vincent Lecours > > _______________________________________________ > vlc-devel mailing list > To unsubscribe or modify your subscription options: > http://mailman.videolan.org/listinfo/vlc-devel > > -------------- next part -------------- An HTML attachment was scrubbed... URL: From remi at remlab.net Mon Jun 7 17:11:35 2010 From: remi at remlab.net (=?UTF-8?Q?R=C3=A9mi_Denis-Courmont?=) Date: Mon, 07 Jun 2010 17:11:35 +0200 Subject: [vlc-devel] Not able to build current git on Mac OS X 10.6 In-Reply-To: References: Message-ID: <6abd106f8ec2a13549cabbe5536ab78f@chewa.net> On Mon, 7 Jun 2010 16:15:08 +0200, Vincent Lecours wrote: > Is someone able to compile the code from the current git repository on Mac > OS X 10.6.3? Each time I try to build the code I always have these errors: That's a known problem. There has been no maintainer for VLC on MacOS for several months. -- R?mi Denis-Courmont http://www.remlab.net http://fi.linkedin.com/in/remidenis From rohityadav89 at gmail.com Mon Jun 7 17:32:48 2010 From: rohityadav89 at gmail.com (Rohit Yadav) Date: Mon, 7 Jun 2010 17:32:48 +0200 Subject: [vlc-devel] Not able to build current git on Mac OS X 10.6 In-Reply-To: <6abd106f8ec2a13549cabbe5536ab78f@chewa.net> References: <6abd106f8ec2a13549cabbe5536ab78f@chewa.net> Message-ID: Hi, On Mon, 7 Jun 2010 16:15:08 +0200, Vincent Lecours > wrote: > > Is someone able to compile the code from the current git repository on > Mac > Yes, I did. Just few days back. Is your Mac 64bit? Mine is 32 bit. Make sure you are using the VLC 1.1-git maintainance branch. (not vlc.git...) Grab the latest here: $git clone git://git.videolan.org/vlc/vlc-1.1.git And follow the steps to get Mac 3rd party contribs: (make sure you have subversion and wget) [From http://wiki.videolan.org/OSXCompile] $ cd vlc/extras/contrib $ ./bootstrap $ make And then, $ cd ../.. $ ./bootstrap $ ./configure --enable-debug $ make If your system is 32 bit, before 'make' do: (just in case) $ ./configure --host=i386-apple-darwin10 CFLAGS="-arch i386" CXXFLAGS="-arch i386" LDFLAGS="-arch i386" OBJCFLAGS="-arch i386" In my case I got stuck with libiconv.la linking, but then somehow I fixed it. Try once again, if that does n't seem to work, you may mail me. Rohit Yadav -------------- next part -------------- An HTML attachment was scrubbed... URL: From xtophe at chewa.net Mon Jun 7 20:17:19 2010 From: xtophe at chewa.net (Christophe Mutricy) Date: Mon, 7 Jun 2010 20:17:19 +0200 Subject: [vlc-devel] [PACKAGERS] Tag 1.1.0-rc2 In-Reply-To: References: <20100603134551.5A800E83CA@albiero.videolan.org> <20100603150853.GA12848@videolan.org> <20100603234641.GA12315@videolan.org> Message-ID: <20100607181719.GC30509@chewa.net> On Mon, Jun 07, 10 at 12:49 +0200, Nicolas Chauvet wrote: > 3/There is a problem *nix system as the desktop icons (either png xpm) > need to be named vlc.{xpm,png} as referenced in the desktop file > (without extension). so the scale need to be removed from the name. > (and the files need to be moved to a subdir in the git source > repository). Mea culpa. I thought it would be ok and then realized it was not. I looked for an eleguant way to solve it but then it fell off my radar -- Xtophe From xtophe at chewa.net Mon Jun 7 20:19:31 2010 From: xtophe at chewa.net (Christophe Mutricy) Date: Mon, 7 Jun 2010 20:19:31 +0200 Subject: [vlc-devel] [PACKAGERS] Tag 1.1.0-rc2 In-Reply-To: <20100607044218.4DEF786@resin09.mta.everyone.net> References: <20100607044218.4DEF786@resin09.mta.everyone.net> Message-ID: <20100607181931.GD30509@chewa.net> On Mon, Jun 07, 10 at 04:42 -0700, gozer at progrock.com wrote: > - for make package-win32: > ./extras/package/win32/languages/*.nsh Looks like i forgot to forward-port something, will fix tonight. -- Xtophe From ileoo at videolan.org Mon Jun 7 20:41:35 2010 From: ileoo at videolan.org (Ilkka Ollakka) Date: Mon, 7 Jun 2010 21:41:35 +0300 Subject: [vlc-devel] Updated patch for ogg/theora seeking In-Reply-To: References: <20100605151359.GA4973@linux-3azp> <20100605195428.GY16350@chewa.net> <20100607061402.GA4860@linux-3azp> Message-ID: <20100607184134.GA25090@linux-3azp> On Mon, Jun 07, 2010 at 08:59:08AM -0300, salsaman wrote: > Ooops. Forgot the patch ! > On Mon, Jun 7, 2010 at 8:58 AM, salsaman <[3]salsaman at gmail.com> wrote: > OK, I hope this fixes all of the formatting problems now. Hi, still few left, I assume you have set tab-expanding to spaces (1 tab to 4 spaces ) and using monospace-font to see indent issues more easily? > From 6f67cd54f2c39a6a987dfa91ba21ce153160d0b3 Mon Sep 17 00:00:00 2001 > From: salsaman > Date: Fri, 4 Jun 2010 00:49:03 -0300 > Subject: [PATCH] ogg/theora seek changes for GSOC project > diff --git a/modules/demux/ogg.c b/modules/demux/ogg.c > index 57d0c02..0575bae 100644 > --- a/modules/demux/ogg.c > +++ b/modules/demux/ogg.c Indent issue here: > @@ -323,15 +263,35 @@ static int Demux( demux_t * p_demux ) > /* > * Demux an ogg page from the stream > */ > - if( Ogg_ReadPage( p_demux, &oggpage ) != VLC_SUCCESS ) > + if( Ogg_ReadPage( p_demux ) != VLC_SUCCESS ) > return 0; /* EOF */ Same here: > + /* if any streams have b_ignore_packets, don't decode anything > + * except headers */ > + for( i_stream = 0; i_stream < p_sys->i_streams; i_stream++ ) > + { > + logical_stream_t *p_stream = p_sys->pp_stream[i_stream]; > + > + if ( p_stream->b_ignore_packets ) > + { > + b_ignore = true; > + } > + > + /* check also if we are pre-rolling as the result of a search */ > + if ( p_stream->i_skip_frames > 0 ) > + { > + b_skipping = true; > + } > + > + } > + > + And here too: it goes like if( stuff ) { } while it should be more like if( stuff ) { } atleast when the file otherwise is more like that. > - > - if( ogg_stream_pagein( &p_stream->os, &oggpage ) != 0 ) > + > + if( ogg_stream_pagein( &p_stream->os, &p_sys->current_page ) != 0 ) > + { > + msg_Warn ( p_demux, "Got incomplete page" ); > continue; > + } > + > + if ( p_sys->i_total_length > 0 ) > + { > + if ( p_stream->fmt.i_codec == VLC_CODEC_THEORA ) > + { > + i_gpos = ogg_page_granulepos( &p_sys->current_page ); > + oggseek_theora_index_entry_add ( p_stream, i_gpos, p_sys->i_input_position ); > + } > + } > + > } > while( ogg_stream_packetout( &p_stream->os, &oggpacket ) > 0 ) > @@ -378,8 +351,21 @@ static int Demux( demux_t * p_demux ) > { > p_stream->i_secondary_header_packets = 0; > } This seems to be also indent off comparing the ending } below > + > + /* update start of data pointer... > + * I think this is correct...*/ > + p_sys->i_data_start = stream_Tell( p_demux->s ); > + > } And these comparing to the next if() case > + /* see if we are ignoring packets because of a seek */ > + if ( b_ignore) continue; > + > + /* If any streams have i_skip_frames, only decode (pre-roll) > + * for those streams */ > + if ( b_skipping && p_stream->i_skip_frames == 0 ) continue; > + > + > if( p_stream->b_reinit ) > { > /* If synchro is re-initialized we need to drop all the packets > @@ -414,13 +400,15 @@ static int Demux( demux_t * p_demux ) > } > } This is still here > - Ogg_DecodePacket( p_demux, p_stream, &oggpacket ); > - } > + Ogg_DecodePacket( p_demux, p_stream, &oggpacket ); > + } Some not needed empty lines > + > + > /* if a page was waiting, it's now processed */ > p_sys->b_page_waiting = false; Indent is also off in here comparing to the following lines: > @@ -429,6 +417,11 @@ static int Demux( demux_t * p_demux ) > { > logical_stream_t *p_stream = p_sys->pp_stream[i_stream]; > + /* after a seek we only ignore all packets which end on the first page, > + * unless we are seeking to the very first frame */ > + > + p_stream->b_ignore_packets = false; > + > if( p_stream->fmt.i_cat == SPU_ES ) > continue; > if( p_stream->i_interpolated_pcr < 0 ) And same for here > + case DEMUX_GET_LENGTH: > + pi64 = (int64_t*)va_arg( args, int64_t * ); > + if( p_sys->i_total_frames > 0 ) > + { > + > + for( i = 0; i < p_sys->i_streams; i++ ) > + { > + logical_stream_t *p_stream = p_sys->pp_stream[i]; > + l_seek_frame = i64 * p_stream->f_rate; > + if ( p_stream->fmt.i_codec == VLC_CODEC_THEORA ) > + { > + f_rate = p_stream->f_rate; > + } > + } > + > + *pi64 = INT64_C(1000000) * p_sys->i_total_frames / f_rate; > + return VLC_SUCCESS; > + } > + else > + return VLC_EGENERIC; > + > case DEMUX_HAS_UNSUPPORTED_META: > pb_bool = (bool*)va_arg( args, bool* ); > *pb_bool = true; > @@ -474,7 +494,71 @@ static int Control( demux_t *p_demux, int i_query, va_list args ) > return VLC_SUCCESS; And here > case DEMUX_SET_TIME: > - return VLC_EGENERIC; > + /* forbid seeking if we haven't initialized all logical bitstreams yet; > + if we allowed, some headers would not get backed up and decoder init > + would fail, making that logical stream unusable */ > + if( p_sys->i_bos > 0 ) > + { > + return VLC_EGENERIC; > + } > + > + /* length 0, probably a remote stream */ > + if ( p_sys->i_total_length == 0 ) > + { > + return VLC_EGENERIC; > + } > + > + > + /* get target frame and seek to the seek point */ > + i64 = (int64_t)va_arg( args, int64_t ); > + if ( i64 > 0 ) > + { > + for( i = 0; i < p_sys->i_streams; i++ ) > + { > + logical_stream_t *p_stream = p_sys->pp_stream[i]; > + > + if (p_stream->fmt.i_cat == VIDEO_ES) > + { > + l_seek_frame = i64 * p_stream->f_rate / INT64_C(1000000); > + > + if ( p_sys->i_total_frames > 0 && l_seek_frame >= p_sys->i_total_frames ) > + { > + l_seek_frame = p_sys->i_total_frames - 1; > + } > + > + if ( p_stream->fmt.i_codec == VLC_CODEC_THEORA ) > + { > + b_seek_done = true; > + i_retval = oggseek_find_frame( p_demux, p_stream, l_seek_frame ); > + es_out_Control ( p_demux->out, ES_OUT_SET_NEXT_DISPLAY_TIME, > + VLC_TS_0 + l_seek_frame * > + INT64_C(1000000) / p_stream->f_rate ); > + } > + > + break; > + } > + } > + > + } > + > + if ( b_seek_done ) > + { > + for( i = 0; i < p_sys->i_streams; i++ ) > + { > + logical_stream_t *p_stream = p_sys->pp_stream[i]; > + /* we'll trash all the data until we find the next pcr */ > + p_stream->b_reinit = true; > + p_stream->i_pcr = -1; > + p_stream->i_interpolated_pcr = -1; > + ogg_stream_reset( &p_stream->os ); > + } > + > + ogg_sync_reset( &p_sys->oy ); > + > + return i_retval; > + } > + > + return VLC_EGENERIC; > case DEMUX_SET_POSITION: > /* forbid seeking if we haven't initialized all logical bitstreams yet; > @@ -485,17 +569,65 @@ static int Control( demux_t *p_demux, int i_query, va_list args ) > return VLC_EGENERIC; > } And here: > - for( i = 0; i < p_sys->i_streams; i++ ) > - { > - logical_stream_t *p_stream = p_sys->pp_stream[i]; > + /* length 0, probably a remote stream */ > + if ( p_sys->i_total_length == 0 ) > + { > + return VLC_EGENERIC; > + } > + > + > + f = (double)va_arg( args, double ); > + if( f < 0.0 || f > 1.0 ) > + { > + return VLC_EGENERIC; > + } > + > + > + /* get target frame and seek to the seek point */ > + if ( p_sys->i_total_frames > 0 ) > + { > + > + for( i = 0; i < p_sys->i_streams; i++ ) > + { > + logical_stream_t *p_stream = p_sys->pp_stream[i]; > + > + if (p_stream->fmt.i_cat == VIDEO_ES) > + { > + l_seek_frame = f * ( p_sys->i_total_frames - 1 ); > + > + if ( p_stream->fmt.i_codec == VLC_CODEC_THEORA ) > + { > + b_seek_done = true; > + i_retval = oggseek_find_frame( p_demux, p_stream, l_seek_frame ); > + es_out_Control ( p_demux->out, ES_OUT_SET_NEXT_DISPLAY_TIME, > + VLC_TS_0 + l_seek_frame * > + INT64_C(1000000) / p_stream->f_rate ); > + } > + > + break; > + } > + } > + > + if ( b_seek_done ) > + { > + for( i = 0; i < p_sys->i_streams; i++ ) > + { > + logical_stream_t *p_stream = p_sys->pp_stream[i]; > + /* we'll trash all the data until we find the next pcr */ > + p_stream->b_reinit = true; > + p_stream->i_pcr = -1; > + p_stream->i_interpolated_pcr = -1; > + ogg_stream_reset( &p_stream->os ); > + } > + > + ogg_sync_reset( &p_sys->oy ); > + > + return i_retval; > + } > + } > + > + Same here, block is indended somewhat oddly, also P_stream should be p_stream ? > + > + /* may need to preroll video frames after a seek */ > + if ( p_stream->i_skip_frames > 0 ) > + { > + p_block->i_flags |= BLOCK_FLAG_PREROLL; > + P_stream->i_skip_frames--; > + } > + > + Here too indention is littlebit odd > + while( Ogg_ReadPage( p_demux ) == VLC_SUCCESS ) > + { > + if( ogg_page_bos( &p_ogg->current_page ) ) > + { > + > + > + /* All is wonderful in our fine fine little world. > + * We found the beginning of our first logical stream. */ > + while( ogg_page_bos( &p_ogg->current_page ) ) > + { > logical_stream_t *p_stream; > - > + > p_stream = malloc( sizeof(logical_stream_t) ); > if( !p_stream ) > return VLC_ENOMEM; > - > + > TAB_APPEND( p_ogg->i_streams, p_ogg->pp_stream, p_stream ); > - > + > memset( p_stream, 0, sizeof(logical_stream_t) ); > p_stream->p_headers = 0; > p_stream->i_secondary_header_packets = 0; Compare these ^^ lines to the lines below > - > + > + p_stream->i_keyframe_offset = 0; > + p_stream->i_skip_frames = 0; > + p_stream->b_ignore_packets = false; > + > es_format_Init( &p_stream->fmt, 0, 0 ); > es_format_Init( &p_stream->fmt_old, 0, 0 ); > - if( Ogg_ReadPage( p_demux, &oggpage ) != VLC_SUCCESS ) > + if( Ogg_ReadPage( p_demux ) != VLC_SUCCESS ) > return VLC_EGENERIC; Same here, seemed to be indent littlebit off regarding lines before > + > + /* set i_data_start now, before we read in the next page > + * we will update this later if we get more bos packets */ > + p_ogg->i_data_start = stream_Tell( p_demux->s ); > + > } > p_stream->p_es = NULL; And this: > + /* initialise kframe index */ > + p_stream->idx=NULL; > + > + > @@ -1417,6 +1620,29 @@ static int Ogg_BeginningOfStream( demux_t *p_demux ) > Ogg_LogicalStreamDelete( p_demux, p_ogg->p_old_stream ); > p_ogg->p_old_stream = NULL; > } Same for here, for-loop seems to have wrong indent > + > + > + /* get total frame count for video stream; we will need this for seeking */ > + p_ogg->i_total_frames = 0; > + > + if ( p_ogg->i_total_length > 0 ) > + { > + > + for( i_stream = 0 ; i_stream < p_ogg->i_streams; i_stream++ ) > + { > + logical_stream_t *p_stream = p_ogg->pp_stream[i_stream]; > + > + if ( p_stream->fmt.i_codec == VLC_CODEC_THEORA ) > + { > + p_ogg->i_total_frames = oggseek_get_last_frame( p_demux, p_stream ); > + > + msg_Dbg( p_demux, "Total frames %"PRId64, p_ogg->i_total_frames ); > + > + } > + } > + } > + > + > @@ -1457,6 +1683,11 @@ static void Ogg_LogicalStreamDelete( demux_t *p_demux, logical_stream_t *p_strea Same for here inside block > + if ( p_stream->idx != NULL) > + { > + oggseek_index_entries_free( p_stream->idx ); > + } > + > @@ -1616,6 +1853,14 @@ static void Ogg_ReadTheoraHeader( logical_stream_t *p_stream, And here > + if ( i_version >= 3002001 ) > + { > + p_stream->i_keyframe_offset = 1; > + } > + > p_stream->f_rate = ((float)i_fps_numerator) / i_fps_denominator; > } > diff --git a/modules/demux/oggseek.c b/modules/demux/oggseek.c > new file mode 100644 > index 0000000..6fc0807 > --- /dev/null > +++ b/modules/demux/oggseek.c > @@ -0,0 +1,846 @@ > +void oggseek_index_entries_free ( demux_index_entry_t *idx ) > +{ Here the same > + while ( idx != NULL ) > + { > + idx_next = idx->next; > + free( idx ); > + idx = idx_next; > + } > +} > + And here > + > + if ( idx == NULL ) > + { > + demux_index_entry_t *ie = index_entry_new(); > + ie->i_granulepos = i_granule; > + ie->i_pagepos = i_pagepos; > + p_stream->idx=ie; > + return ie; > + } > + > + > + while ( idx != NULL ) > + { > + i_gpos = idx->i_granulepos; > + > + i_kframe = i_gpos >> p_stream->i_granule_shift; > + if ( i_kframe > i_tframe ) break; > + Compare that earlier if to this below (while while() seems to be off): > + if ( i_kframe == i_tkframe ) > + { > + /* entry exists, update it if applicable, and return it */ > + i_frame = i_kframe + i_gpos - ( i_kframe << p_stream->i_granule_shift ); > + if ( i_frame < i_tframe ) > + { > + idx->i_granulepos = i_granule; > + idx->i_pagepos = i_pagepos; > + } > + > + return idx; > + } > + > + last_idx = idx; > + idx = idx->next; > + } > + Skipping lines, I think you noticed the pattern? Theres few leftover fprintf-debug lines here and there (all commented out). -- Ilkka Ollakka For a man to truly understand rejection, he must first be ignored by a cat. -------------- next part -------------- A non-text attachment was scrubbed... Name: not available Type: application/pgp-signature Size: 490 bytes Desc: not available URL: From remi at remlab.net Mon Jun 7 20:46:35 2010 From: remi at remlab.net (=?iso-8859-1?q?R=E9mi?= Denis-Courmont) Date: Mon, 7 Jun 2010 21:46:35 +0300 Subject: [vlc-devel] [PATCH 1/1] Add support for DivX XSUB subtitle streams. In-Reply-To: <1274873540-19665-1-git-send-email-jmenon86@gmail.com> References: <1274873540-19665-1-git-send-email-jmenon86@gmail.com> Message-ID: <201006072146.35863.remi@remlab.net> What's the status with this patch? -- R?mi Denis-Courmont http://www.remlab.net/ http://fi.linkedin.com/in/remidenis From jb at videolan.org Mon Jun 7 20:53:09 2010 From: jb at videolan.org (Jean-Baptiste Kempf) Date: Mon, 7 Jun 2010 20:53:09 +0200 Subject: [vlc-devel] [PATCH 1/1] Add support for DivX XSUB subtitle streams. In-Reply-To: <201006072146.35863.remi@remlab.net> References: <1274873540-19665-1-git-send-email-jmenon86@gmail.com> <201006072146.35863.remi@remlab.net> Message-ID: <20100607185309.GA1432@videolan.org> On Mon, Jun 07, 2010 at 09:46:35PM +0300, R?mi Denis-Courmont wrote : > What's the status with this patch? > Applied in [f5b8f4a13fe40151abd54a009049e5d9a6e6780c], IIRC My bad. -- Jean-Baptiste Kempf http://www.jbkempf.com/ From salsaman at gmail.com Mon Jun 7 13:59:08 2010 From: salsaman at gmail.com (salsaman) Date: Mon, 7 Jun 2010 08:59:08 -0300 Subject: [vlc-devel] Updated patch for ogg/theora seeking In-Reply-To: References: <20100605151359.GA4973@linux-3azp> <20100605195428.GY16350@chewa.net> <20100607061402.GA4860@linux-3azp> Message-ID: Ooops. Forgot the patch ! Gabriel. http://lives.sourceforge.net https://www.ohloh.net/accounts/salsaman On Mon, Jun 7, 2010 at 8:58 AM, salsaman wrote: > OK, I hope this fixes all of the formatting problems now. > > You can test the patch by downloading for example, Elephants Dream: > > http://streams.videolan.org/streams-videolan/ogg/elephantsdream-with-subtitles.ogg > > Then either click on the timeline at the bottom, or enter a "Goto" time. > > Without the patch you will see that the time length at the bottom is just > an estimate, and there are frame artifacts when you click on the timeline. > With the patch you will see that the time length is exact and all frames are > reproduced perfectly. You can even slide the time position left and right. > > Regards, > Gabriel. > > > > http://lives.sourceforge.net > https://www.ohloh.net/accounts/salsaman > > > -------------- next part -------------- An HTML attachment was scrubbed... URL: -------------- next part -------------- A non-text attachment was scrubbed... Name: 0001-ogg-theora-seek-changes-for-GSOC-project.patch Type: text/x-patch Size: 56253 bytes Desc: not available URL: From jb at videolan.org Mon Jun 7 21:42:55 2010 From: jb at videolan.org (Jean-Baptiste Kempf) Date: Mon, 7 Jun 2010 21:42:55 +0200 Subject: [vlc-devel] Updated patch for ogg/theora seeking In-Reply-To: References: <20100605151359.GA4973@linux-3azp> <20100605195428.GY16350@chewa.net> <20100607061402.GA4860@linux-3azp> Message-ID: <20100607194255.GA9591@videolan.org> On Mon, Jun 07, 2010 at 08:59:08AM -0300, salsaman wrote : > diff --git a/modules/codec/theora.c b/modules/codec/theora.c > + /* need to skip some pages after a seek */ > + if ( p_block->i_flags & BLOCK_FLAG_PREROLL ) > + { > + p_sys->b_skip_frame = true; > + } > + else p_sys->b_skip_frame = false; Wouldn't something like this, be better? p_sys->b_skip_frame = ( p_block->i_flags & BLOCK_FLAG_PREROLL ); > + /* update start of data pointer... > + * I think this is correct...*/ > + p_sys->i_data_start = stream_Tell( p_demux->s ); Can anyone comment on the correctness? > + long l_seek_frame; Why long here? > + l_seek_frame = i64 * p_stream->f_rate; ? > + if ( p_stream->fmt.i_codec == VLC_CODEC_THEORA ) > + { > + f_rate = p_stream->f_rate; > + } Does it apply to THEORA only or all video codecs? (dirac?vp8?) > + for( i = 0; i < p_sys->i_streams; i++ ) Side note: you can define loop counter inside for( in VLC code. > + int i_page_size; Is int the best here? > +struct _oggseek_index_entry I doubt this is legal: starting with _ . Aren't _* reserved? Best Regards, -- Jean-Baptiste Kempf http://www.jbkempf.com/ From kwizart at gmail.com Mon Jun 7 21:51:37 2010 From: kwizart at gmail.com (Nicolas Chauvet) Date: Mon, 7 Jun 2010 21:51:37 +0200 Subject: [vlc-devel] [PACKAGERS] Tag 1.1.0-rc2 In-Reply-To: <90c3d4fcc187bad664d8507679dc0ca6@chewa.net> References: <20100603134551.5A800E83CA@albiero.videolan.org> <20100603150853.GA12848@videolan.org> <20100603234641.GA12315@videolan.org> <90c3d4fcc187bad664d8507679dc0ca6@chewa.net> Message-ID: Le 7 juin 2010 13:41, R?mi Denis-Courmont a ?crit : > > On Mon, 7 Jun 2010 12:49:17 +0200, Nicolas Chauvet > wrote: >> 1/ vlc -rc2 is crashing with me. (core dump) I'm trying to reproduce >> on another system. >> That was not the case with -pre3. > > That looks like a buggy taglib in Fedora. That's a different issue than taglib, only 1.0.6 is affected (or another problem hit 1.1.0 before the taglib problem). This problem arise either or not I have the /usr/lib64/kde4/plugins/gui_platform/libkde.so file from the kdebase-workspace-libs package. I saw that th function was called from vlc binary from override.c Here is the backtrace. --------------------- (gdb) run Starting program: /usr/bin/vlc [Thread debugging using libthread_db enabled] VLC media player 1.1.0-rc2 The Luggage (revision exported) Detaching after fork from child process 14827. Detaching after fork from child process 14828. Program received signal SIGSEGV, Segmentation fault. __strstr_sse2 (haystack_start=0x0, needle_start=0x401e46 "/gui_platform/libkde.so") at ../string/strstr.c:63 63 while (*haystack && *needle) (gdb) run The program being debugged has been started already. Start it from the beginning? (y or n) n Program not restarted. (gdb) bt #0 __strstr_sse2 (haystack_start=0x0, needle_start=0x401e46 "/gui_platform/libkde.so") at ../string/strstr.c:63 #1 0x000000000040159d in dlopen (path=0x0, flag=257) at override.c:289 #2 0x0000003c8104811d in ?? () from /usr/lib64/nvidia/libGL.so.1 #3 0x0000003c81087045 in _init () from /usr/lib64/nvidia/libGL.so.1 #4 0x0000003c6740e465 in call_init (main_map=0x7439a0, argc=1, argv=0x7fffffffe338, env=0x7fffffffe348) at dl-init.c:70 #5 _dl_init (main_map=0x7439a0, argc=1, argv=0x7fffffffe338, env=0x7fffffffe348) at dl-init.c:134 #6 0x0000003c67412bf1 in dl_open_worker (a=) at dl-open.c:493 #7 0x0000003c6740e0c6 in _dl_catch_error (objname=0x7fffffffd8a0, errstring=0x7fffffffd898, mallocedp= 0x7fffffffd8af, operate=0x3c67412850 , args=0x7fffffffd850) at dl-error.c:178 #8 0x0000003c6741242a in _dl_open (file=0x7406b0 "/usr/lib64/vlc/plugins/video_output/libcaca_plugin.so", mode= -2147483646, caller_dlopen=0x331c491c36, nsid=-2, argc=1, argv=, env=0x7fffffffe348) at dl-open.c:584 #9 0x0000003c68000f66 in dlopen_doit (a=0x7fffffffda70) at dlopen.c:67 #10 0x0000003c6740e0c6 in _dl_catch_error (objname=0x604020, errstring=0x604028, mallocedp=0x604018, operate= 0x3c68000f00 , args=0x7fffffffda70) at dl-error.c:178 #11 0x0000003c6800129c in _dlerror_run (operate=0x3c68000f00 , args=0x7fffffffda70) at dlerror.c:164 #12 0x0000003c68000ee1 in __dlopen (file=, mode=) at dlopen.c:88 #13 0x000000331c491c36 in module_Load (p_this=0x605120, psz_file=, p_handle=0x7fffffffdad8) at modules/os.c:188 #14 0x000000331c48b606 in AllocatePlugin (p_this=0x605120, psz_file= 0x7406b0 "/usr/lib64/vlc/plugins/video_output/libcaca_plugin.so") at modules/modules.c:1015 #15 0x000000331c48c53c in AllocatePluginFile (p_this=0x605120, p_bank=0x6054d0, psz_dir= 0x634e70 "/usr/lib64/vlc/plugins/video_output", i_maxdepth=4) at modules/modules.c:960 #16 AllocatePluginDir (p_this=0x605120, p_bank=0x6054d0, psz_dir=0x634e70 "/usr/lib64/vlc/plugins/video_output", i_maxdepth=4) at modules/modules.c:912 #17 0x000000331c48c464 in AllocatePluginDir (p_this=0x605120, p_bank=0x6054d0, psz_dir= 0x634f20 "/usr/lib64/vlc/plugins", i_maxdepth=5) at modules/modules.c:904 #18 0x000000331c48cdd9 in AllocateAllPlugins (p_this=0x605120) at modules/modules.c:854 #19 module_LoadPlugins (p_this=0x605120) at modules/modules.c:217 #20 0x000000331c41de10 in libvlc_InternalInit (p_libvlc=0x605120, i_argc=3, ppsz_argv=0x7fffffffe0c0) ---Type to continue, or q to quit--- at libvlc.c:453 #21 0x000000331c00696f in libvlc_new (argc=2, argv=) at control/core.c:58 #22 0x000000000040130c in main (i_argc=, ppsz_argv=) at vlc.c:182 -------------------- Nicolas (kwizart) From jb at videolan.org Mon Jun 7 21:59:47 2010 From: jb at videolan.org (Jean-Baptiste Kempf) Date: Mon, 7 Jun 2010 21:59:47 +0200 Subject: [vlc-devel] [PACKAGERS] Tag 1.1.0-rc2 In-Reply-To: <20100607110724.20472lz93jnl2ri8@webmail.leuenberger.net> References: <20100603134551.5A800E83CA@albiero.videolan.org> <20100603150853.GA12848@videolan.org> <20100603234641.GA12315@videolan.org> <20100607110724.20472lz93jnl2ri8@webmail.leuenberger.net> Message-ID: <20100607195947.GA14405@videolan.org> On Mon, Jun 07, 2010 at 11:07:24AM +0300, Dominique Leuenberger wrote : > Maybe a small heads up on what new build deps we should add to the new > version would be great: like what new things since 1.0.6 became optional > dependencies for added feature set? Dominique, I believe the biggest changes, packager side are: - all xcb plugins, please see if you have all of them built, - alsa should be at the latest version possible, - libudev is now used - VAAPI if you can. Best Regards, -- Jean-Baptiste Kempf http://www.jbkempf.com/ From xant at xant.net Mon Jun 7 22:10:17 2010 From: xant at xant.net (Andrea Guzzo) Date: Mon, 7 Jun 2010 22:10:17 +0200 Subject: [vlc-devel] Not able to build current git on Mac OS X 10.6 In-Reply-To: <6abd106f8ec2a13549cabbe5536ab78f@chewa.net> References: <6abd106f8ec2a13549cabbe5536ab78f@chewa.net> Message-ID: <1A6A99B0-1846-4D16-9C62-4810D91C0578@xant.net> Hi, I've been trying to build current trunk on my 10.6 as well ... and I had exactly the same problem. I gave a look at the code and, as far as I see ,the problem is that most of 'struct vout_thread_t' has been made private. The actual data has been hidden inside 'vout_thread_sys_t' ... defined in vout_internal.h and visible only to libvlc itself (not to plugins). As far as I see, the osx view implementation used the 'render' member of that structure to sort out the size of the underlying vout (to than resize the window accordingly). I've tried looking around in the headers but I haven't understood (yet) what is the proper way to access the 'video_format_t' used by a vout size from outside the vout implementation itself. any clue? Cheers, Andrea. On Jun 7, 2010, at 5:11 PM, R?mi Denis-Courmont wrote: > > On Mon, 7 Jun 2010 16:15:08 +0200, Vincent Lecours > wrote: >> Is someone able to compile the code from the current git repository on > Mac >> OS X 10.6.3? Each time I try to build the code I always have these > errors: > > That's a known problem. There has been no maintainer for VLC on MacOS for > several months. > > -- > R?mi Denis-Courmont > http://www.remlab.net > http://fi.linkedin.com/in/remidenis > > _______________________________________________ > vlc-devel mailing list > To unsubscribe or modify your subscription options: > http://mailman.videolan.org/listinfo/vlc-devel From salsaman at gmail.com Mon Jun 7 22:10:04 2010 From: salsaman at gmail.com (salsaman) Date: Mon, 7 Jun 2010 17:10:04 -0300 Subject: [vlc-devel] Updated patch for ogg/theora seeking In-Reply-To: <20100607194255.GA9591@videolan.org> References: <20100605151359.GA4973@linux-3azp> <20100605195428.GY16350@chewa.net> <20100607061402.GA4860@linux-3azp> <20100607194255.GA9591@videolan.org> Message-ID: On Mon, Jun 7, 2010 at 4:42 PM, Jean-Baptiste Kempf wrote: > On Mon, Jun 07, 2010 at 08:59:08AM -0300, salsaman wrote : > > diff --git a/modules/codec/theora.c b/modules/codec/theora.c > > > + /* need to skip some pages after a seek */ > > + if ( p_block->i_flags & BLOCK_FLAG_PREROLL ) > > + { > > + p_sys->b_skip_frame = true; > > + } > > + else p_sys->b_skip_frame = false; > Wouldn't something like this, be better? > p_sys->b_skip_frame = ( p_block->i_flags & BLOCK_FLAG_PREROLL ); > > > Yes, you are right. I will change it. > > + /* update start of data pointer... > > + * I think this is correct...*/ > > + p_sys->i_data_start = stream_Tell( p_demux->s ); > Can anyone comment on the correctness? > > > + long l_seek_frame; > Why long here? > > > + l_seek_frame = i64 * p_stream->f_rate; > ? > > > It was long in the original code. Probably it could be int64. > > + if ( p_stream->fmt.i_codec == VLC_CODEC_THEORA ) > > + { > > + f_rate = p_stream->f_rate; > > + } > Does it apply to THEORA only or all video codecs? (dirac?vp8?) > > I don't know yet... > > + for( i = 0; i < p_sys->i_streams; i++ ) > Side note: you can define loop counter inside for( in VLC code. > > > + int i_page_size; > Is int the best here? > > int is fine. The page size is usually about 8Kb. There is a max somewhere in the standard which I am sure is << INT32_MAX. > > +struct _oggseek_index_entry > I doubt this is legal: starting with _ . Aren't _* reserved? > > I am not sure, but this is typedefed to demux_index_t anyway. In my own code I generally use an _ to indicate use some typedefed version. Gabriel. -------------- next part -------------- An HTML attachment was scrubbed... URL: From ileoo at videolan.org Mon Jun 7 22:12:36 2010 From: ileoo at videolan.org (Ilkka Ollakka) Date: Mon, 7 Jun 2010 23:12:36 +0300 Subject: [vlc-devel] Updated patch for ogg/theora seeking In-Reply-To: References: <20100605151359.GA4973@linux-3azp> <20100605195428.GY16350@chewa.net> <20100607061402.GA4860@linux-3azp> <20100607191537.GB25090@linux-3azp> Message-ID: <20100607201236.GC25090@linux-3azp> On Mon, Jun 07, 2010 at 05:02:59PM -0300, salsaman wrote: > Well, I don't understand then. It is working perfectly here. You have to > download the file and not stream it remotely. Maybe the bug is if it is a > remote stream (URL) but I tested this with other streams (file size == 0) > and it worked (i.e. do not seek in streams). Hi, Patch should work both cases anyway and it shouldn't case if file is remote or local as it doesn't do the access. It can check if stream can seek or can fastseek. And please keep mails in mailinglist, otherwise could be hard for others to follow the status. -- Ilkka Ollakka "I do not fear computers. I fear the lack of them." -- Isaac Asimov -------------- next part -------------- A non-text attachment was scrubbed... Name: not available Type: application/pgp-signature Size: 490 bytes Desc: not available URL: From salsaman at gmail.com Mon Jun 7 22:13:33 2010 From: salsaman at gmail.com (salsaman) Date: Mon, 7 Jun 2010 17:13:33 -0300 Subject: [vlc-devel] Updated patch for ogg/theora seeking In-Reply-To: References: <20100605151359.GA4973@linux-3azp> <20100605195428.GY16350@chewa.net> <20100607061402.GA4860@linux-3azp> <20100607194255.GA9591@videolan.org> Message-ID: On Mon, Jun 7, 2010 at 5:10 PM, salsaman wrote: > > > On Mon, Jun 7, 2010 at 4:42 PM, Jean-Baptiste Kempf wrote: > >> On Mon, Jun 07, 2010 at 08:59:08AM -0300, salsaman wrote : >> > diff --git a/modules/codec/theora.c b/modules/codec/theora.c >> >> > + /* need to skip some pages after a seek */ >> > + if ( p_block->i_flags & BLOCK_FLAG_PREROLL ) >> > + { >> > + p_sys->b_skip_frame = true; >> > + } >> > + else p_sys->b_skip_frame = false; >> Wouldn't something like this, be better? >> p_sys->b_skip_frame = ( p_block->i_flags & BLOCK_FLAG_PREROLL ); >> >> >> > > > Yes, you are right. I will change it. > > Actually, come to think of it, no, strictly speaking: e.g. BLOCK_FLAG_PREROLL = 2 p_block->i_flags = 2 p_block->i_flags&BLOCK_FLAG_PREROLL = 2; true = 1; Ooops !! Gabriel. -------------- next part -------------- An HTML attachment was scrubbed... URL: From salsaman at gmail.com Mon Jun 7 22:14:58 2010 From: salsaman at gmail.com (salsaman) Date: Mon, 7 Jun 2010 17:14:58 -0300 Subject: [vlc-devel] Updated patch for ogg/theora seeking In-Reply-To: <20100607201236.GC25090@linux-3azp> References: <20100605151359.GA4973@linux-3azp> <20100605195428.GY16350@chewa.net> <20100607061402.GA4860@linux-3azp> <20100607191537.GB25090@linux-3azp> <20100607201236.GC25090@linux-3azp> Message-ID: OK, how do I check for a stream ? I was assuming that if the file size was 0 then it is a stream, otherwise it is a file. Gabriel. http://lives.sourceforge.net https://www.ohloh.net/accounts/salsaman On Mon, Jun 7, 2010 at 5:12 PM, Ilkka Ollakka wrote: > On Mon, Jun 07, 2010 at 05:02:59PM -0300, salsaman wrote: > > Well, I don't understand then. It is working perfectly here. You have > to > > download the file and not stream it remotely. Maybe the bug is if it > is a > > remote stream (URL) but I tested this with other streams (file size == > 0) > > and it worked (i.e. do not seek in streams). > > Hi, > > Patch should work both cases anyway and it shouldn't case if file is > remote or local as it doesn't do the access. It can check if stream can > seek or can fastseek. > > > And please keep mails in mailinglist, otherwise could be hard for others to > follow > the status. > > -- > Ilkka Ollakka > "I do not fear computers. I fear the lack of them." > -- Isaac Asimov > > _______________________________________________ > vlc-devel mailing list > To unsubscribe or modify your subscription options: > http://mailman.videolan.org/listinfo/vlc-devel > > -------------- next part -------------- An HTML attachment was scrubbed... URL: From salsaman at gmail.com Mon Jun 7 22:16:28 2010 From: salsaman at gmail.com (salsaman) Date: Mon, 7 Jun 2010 17:16:28 -0300 Subject: [vlc-devel] Updated patch for ogg/theora seeking In-Reply-To: References: <20100605151359.GA4973@linux-3azp> <20100605195428.GY16350@chewa.net> <20100607061402.GA4860@linux-3azp> <20100607194255.GA9591@videolan.org> Message-ID: http://lives.sourceforge.net https://www.ohloh.net/accounts/salsaman On Mon, Jun 7, 2010 at 5:13 PM, salsaman wrote: > > > > On Mon, Jun 7, 2010 at 5:10 PM, salsaman wrote: > >> >> >> On Mon, Jun 7, 2010 at 4:42 PM, Jean-Baptiste Kempf wrote: >> >>> On Mon, Jun 07, 2010 at 08:59:08AM -0300, salsaman wrote : >>> > diff --git a/modules/codec/theora.c b/modules/codec/theora.c >>> >>> > + /* need to skip some pages after a seek */ >>> > + if ( p_block->i_flags & BLOCK_FLAG_PREROLL ) >>> > + { >>> > + p_sys->b_skip_frame = true; >>> > + } >>> > + else p_sys->b_skip_frame = false; >>> Wouldn't something like this, be better? >>> p_sys->b_skip_frame = ( p_block->i_flags & BLOCK_FLAG_PREROLL ); >>> >>> >>> >> > > > > > >> >> Yes, you are right. I will change it. >> >> > > Actually, come to think of it, no, strictly speaking: > > e.g. > > BLOCK_FLAG_PREROLL = 2 > > p_block->i_flags = 2 > > p_block->i_flags&BLOCK_FLAG_PREROLL = 2; > > true = 1; > > Ooops !! > > > Gabriel. > > or in other words, boolean should be constrained to only take the values true or false. Gabriel. -------------- next part -------------- An HTML attachment was scrubbed... URL: From olivier.aubert at liris.cnrs.fr Mon Jun 7 22:28:07 2010 From: olivier.aubert at liris.cnrs.fr (Olivier Aubert) Date: Mon, 07 Jun 2010 22:28:07 +0200 Subject: [vlc-devel] Updated patch for ogg/theora seeking In-Reply-To: <20100607184134.GA25090@linux-3azp> References: <20100605151359.GA4973@linux-3azp> <20100605195428.GY16350@chewa.net> <20100607061402.GA4860@linux-3azp> <20100607184134.GA25090@linux-3azp> Message-ID: <1275942487.25138.259.camel@abbeyroad.dnsalias.org> On Mon, 2010-06-07 at 21:41 +0300, Ilkka Ollakka wrote: > On Mon, Jun 07, 2010 at 08:59:08AM -0300, salsaman wrote: > > Ooops. Forgot the patch ! > > > On Mon, Jun 7, 2010 at 8:58 AM, salsaman <[3]salsaman at gmail.com> wrote: > > > OK, I hope this fixes all of the formatting problems now. > > Hi, still few left, I assume you have set tab-expanding to spaces (1 tab > to 4 spaces ) and using monospace-font to see indent issues more easily? Hi Just a hint (since salsaman uses emacs): - to fix the issue in the current file, type the following: C-x h (or M-x mark-whole-buffer) M-x untabify - to make sure not to worry about tabs again: M-x customize-variable Enter: indent-tabs-mode Set the value to: nil Click on Set for future sessions Olivier From ileoo at videolan.org Mon Jun 7 22:28:29 2010 From: ileoo at videolan.org (Ilkka Ollakka) Date: Mon, 7 Jun 2010 23:28:29 +0300 Subject: [vlc-devel] Updated patch for ogg/theora seeking In-Reply-To: References: <20100605195428.GY16350@chewa.net> <20100607061402.GA4860@linux-3azp> <20100607191537.GB25090@linux-3azp> <20100607201236.GC25090@linux-3azp> Message-ID: <20100607202829.GD25090@linux-3azp> On Mon, Jun 07, 2010 at 05:14:58PM -0300, salsaman wrote: > OK, how do I check for a stream ? I was assuming that if the file size was > 0 then it is a stream, otherwise it is a file. Hi, You can use stream_Control( stream_t *, STREAM_CAN_SEEK, &bool ) or STREAM_CAN_FASTSEEK to check if stream is seekable or can be seeked fast. You don't really need to know if input is file or stream. (stream_Tell/stream_Size uses STREAM_GET_POSITION and STREAM_GET_SIZE, if you look vlc/include/vlc_stream.h ). -- Ilkka Ollakka Money is the root of all evil, and man needs roots -------------- next part -------------- A non-text attachment was scrubbed... Name: not available Type: application/pgp-signature Size: 490 bytes Desc: not available URL: From remi at remlab.net Mon Jun 7 22:35:56 2010 From: remi at remlab.net (=?iso-8859-1?q?R=E9mi?= Denis-Courmont) Date: Mon, 7 Jun 2010 23:35:56 +0300 Subject: [vlc-devel] Not able to build current git on Mac OS X 10.6 In-Reply-To: <1A6A99B0-1846-4D16-9C62-4810D91C0578@xant.net> References: <6abd106f8ec2a13549cabbe5536ab78f@chewa.net> <1A6A99B0-1846-4D16-9C62-4810D91C0578@xant.net> Message-ID: <201006072335.57207.remi@remlab.net> Le lundi 7 juin 2010 23:10:17 Andrea Guzzo, vous avez ?crit : > I've been trying to build current trunk on my 10.6 as well ... and I had > exactly the same problem. I gave a look at the code and, as far as I see > ,the problem is that most of 'struct vout_thread_t' has been made > private. The actual data has been hidden inside 'vout_thread_sys_t' ... > defined in vout_internal.h and visible only to libvlc itself (not to > plugins). No. The problem is that vout_thread is now an internal structure altogether. As of last September, video output plugins use a complete completely new (needless to say, much better) plugin interface, vout_display. In other words, a new video output needs to be written (mostly) from scratch. Pretty much everything except MacOS has already been ported or removed. -- R?mi Denis-Courmont http://www.remlab.net/ http://fi.linkedin.com/in/remidenis From remi at remlab.net Mon Jun 7 22:40:53 2010 From: remi at remlab.net (=?iso-8859-1?q?R=E9mi?= Denis-Courmont) Date: Mon, 7 Jun 2010 23:40:53 +0300 Subject: [vlc-devel] [PACKAGERS] Tag 1.1.0-rc2 In-Reply-To: References: <20100603134551.5A800E83CA@albiero.videolan.org> <90c3d4fcc187bad664d8507679dc0ca6@chewa.net> Message-ID: <201006072340.53377.remi@remlab.net> Le lundi 7 juin 2010 22:51:37 Nicolas Chauvet, vous avez ?crit : > That's a different issue than taglib, only 1.0.6 is affected (or > another problem hit 1.1.0 before the taglib problem). > This problem arise either or not I have the > /usr/lib64/kde4/plugins/gui_platform/libkde.so file from the > kdebase-workspace-libs package. That should be fixed but I don't want to know why NVidia libGL is involved in dlopen()'ing the caca plugin... -- R?mi Denis-Courmont http://www.remlab.net/ http://fi.linkedin.com/in/remidenis From atburrow at gmail.com Mon Jun 7 23:03:39 2010 From: atburrow at gmail.com (Austin Burrow) Date: Mon, 7 Jun 2010 16:03:39 -0500 Subject: [vlc-devel] [Patch 1/2] Cleaned up code so it goes by the code conventions. Message-ID: <00a701cb0684$e89f6100$b9de2300$@com> Too big for email so I've uploaded it at http://vlc.pastebin.com/1tWghHBg Regards, Austin -------------- next part -------------- An HTML attachment was scrubbed... URL: From atburrow at gmail.com Mon Jun 7 23:04:30 2010 From: atburrow at gmail.com (Austin Burrow) Date: Mon, 7 Jun 2010 16:04:30 -0500 Subject: [vlc-devel] [Patch 2/2] Clean up code to match code conventions. Message-ID: <00ac01cb0685$06de9aa0$149bcfe0$@com> diff --git a/modules/services_discovery/upnp_intel.cpp b/modules/services_discovery/upnp_intel.cpp index 269b5ff..dec8f8d 100644 --- a/modules/services_discovery/upnp_intel.cpp +++ b/modules/services_discovery/upnp_intel.cpp @@ -27,7 +27,6 @@ /* \TODO: Debug messages: "__FILE__, __LINE__" ok ???, Wrn/Err ??? - \TODO: Change names to VLC standard ??? */ #undef PACKAGE_NAME #ifdef HAVE_CONFIG_H @@ -148,12 +147,12 @@ static void Close( vlc_object_t *p_this ) // Returns the value of a child element, or 0 on error const char* xml_getChildElementValue( IXML_Element* p_parent, - const char* _psz_tag_name ) + const char* psz_tag_name_ ) { if ( !p_parent ) return 0; - if ( !_psz_tag_name ) return 0; + if ( !psz_tag_name_ ) return 0; - char* psz_tag_name = strdup( _psz_tag_name ); + char* psz_tag_name = strdup( psz_tag_name_ ); IXML_NodeList* p_node_list = ixmlElement_getElementsByTagName( p_parent, psz_tag_name ); free( psz_tag_name ); if ( !p_node_list ) return 0; @@ -535,12 +534,12 @@ void MediaServer::subscribeToContentDirectory() } } -IXML_Document* MediaServer::_browseAction( const char* pObjectID, - const char* pBrowseFlag, - const char* pFilter, - const char* pStartingIndex, - const char* pRequestedCount, - const char* pSortCriteria ) +IXML_Document* MediaServer::_browseAction( const char* psz_object_id_, + const char* psz_browser_flag_, + const char* psz_filter_, + const char* psz_starting_index_, + const char* psz_requested_count_, + const char* psz_sort_criteria_ ) { IXML_Document* p_action = 0; IXML_Document* p_response = 0; @@ -552,12 +551,12 @@ IXML_Document* MediaServer::_browseAction( const char* pObjectID, return 0; } - char* psz_object_id = strdup( pObjectID ); - char* psz_browse_flag = strdup( pBrowseFlag ); - char* psz_filter = strdup( pFilter ); - char* psz_starting_index = strdup( pStartingIndex ); - char* psz_requested_count = strdup( pRequestedCount ); - char* psz_sort_criteria = strdup( pSortCriteria ); + char* psz_object_id = strdup( psz_object_id_ ); + char* psz_browse_flag = strdup( psz_browser_flag_ ); + char* psz_filter = strdup( psz_filter_ ); + char* psz_starting_index = strdup( psz_starting_index_ ); + char* psz_requested_count = strdup( psz_requested_count_ ); + char* psz_sort_criteria = strdup( psz_sort_criteria_ ); char* psz_service_type = strdup( CONTENT_DIRECTORY_SERVICE_TYPE ); int i_res; @@ -930,13 +929,14 @@ void MediaServerList::removeServer( const char* psz_udn ) // Item... -Item::Item( Container* p_parent, const char* objectID, const char* title, const char* resource ) +Item::Item( Container* p_parent, const char* psz_object_id, const char* psz_title, + const char* psz_resource ) { _parent = p_parent; - _objectID = objectID; - _title = title; - _resource = resource; + _objectID = psz_object_id; + _title = psz_title; + _resource = psz_resource; _inputItem = NULL; } @@ -983,13 +983,13 @@ input_item_t* Item::getInputItem() const // Container... Container::Container( Container* p_parent, - const char* objectID, - const char* title ) + const char* psz_object_id, + const char* psz_title ) { _parent = p_parent; - _objectID = objectID; - _title = title; + _objectID = psz_object_id; + _title = psz_title; _inputItem = NULL; } @@ -1015,9 +1015,9 @@ void Container::addItem( Item* item ) _items.push_back( item ); } -void Container::addContainer( Container* container ) +void Container::addContainer( Container* p_container ) { - _containers.push_back( container ); + _containers.push_back( p_container ); } const char* Container::getObjectID() const @@ -1040,15 +1040,15 @@ unsigned int Container::getNumContainers() const return _containers.size(); } -Item* Container::getItem( unsigned int i ) const +Item* Container::getItem( unsigned int i_index ) const { - if ( i < _items.size() ) return _items[i]; + if ( i_index < _items.size() ) return _items[i_index]; return 0; } -Container* Container::getContainer( unsigned int i ) const +Container* Container::getContainer( unsigned int i_index ) const { - if ( i < _containers.size() ) return _containers[i]; + if ( i_index < _containers.size() ) return _containers[i_index]; return 0; } -- 1.7.1 -------------- next part -------------- An HTML attachment was scrubbed... URL: From remi at remlab.net Mon Jun 7 23:10:07 2010 From: remi at remlab.net (=?iso-8859-15?q?R=E9mi?= Denis-Courmont) Date: Tue, 8 Jun 2010 00:10:07 +0300 Subject: [vlc-devel] [Patch 2/2] Clean up code to match code conventions. In-Reply-To: <00ac01cb0685$06de9aa0$149bcfe0$@com> References: <00ac01cb0685$06de9aa0$149bcfe0$@com> Message-ID: <201006080010.07754.remi@remlab.net> Le mardi 8 juin 2010 00:04:30 Austin Burrow, vous avez ?crit : > diff --git a/modules/services_discovery/upnp_intel.cpp > b/modules/services_discovery/upnp_intel.cpp It seems that your MUA has corrupted the patch. Fix your MUA, use another one, or simply attach the patch. Please use git format while at that. -- R?mi Denis-Courmont http://www.remlab.net/ http://fi.linkedin.com/in/remidenis From atburrow at gmail.com Mon Jun 7 23:19:29 2010 From: atburrow at gmail.com (Austin Burrow) Date: Mon, 7 Jun 2010 16:19:29 -0500 Subject: [vlc-devel] [Patch 1/2] Cleaned up code so it goes by the code conventions. *revised* Message-ID: <00b401cb0687$1e79c700$5b6d5500$@com> I re-uploaded the patch at http://vlc.pastebin.com/WR5t7xUV -------------- next part -------------- An HTML attachment was scrubbed... URL: From atburrow at gmail.com Mon Jun 7 23:35:13 2010 From: atburrow at gmail.com (Austin Burrow) Date: Mon, 7 Jun 2010 16:35:13 -0500 Subject: [vlc-devel] [Patch 2/2] Cleaned up code to match code conventions. Message-ID: <00b901cb0689$527e82a0$f77b87e0$@com> Patch is attached. --- Austin -------------- next part -------------- An HTML attachment was scrubbed... URL: -------------- next part -------------- A non-text attachment was scrubbed... Name: 0002-Cleaned-up-code-to-match-code-conventions.patch Type: application/octet-stream Size: 5325 bytes Desc: not available URL: From dominique at leuenberger.net Mon Jun 7 23:35:47 2010 From: dominique at leuenberger.net (Dominique Leuenberger) Date: Mon, 07 Jun 2010 23:35:47 +0200 Subject: [vlc-devel] [PACKAGERS] Tag 1.1.0-rc2 In-Reply-To: <20100607195947.GA14405@videolan.org> References: <20100603134551.5A800E83CA@albiero.videolan.org> <20100603150853.GA12848@videolan.org> <20100603234641.GA12315@videolan.org> <20100607110724.20472lz93jnl2ri8@webmail.leuenberger.net> <20100607195947.GA14405@videolan.org> Message-ID: <1275946547.1367.3.camel@3120-2914.ams.tmf-group.com> On Mon, 2010-06-07 at 21:59 +0200, Jean-Baptiste Kempf wrote: > On Mon, Jun 07, 2010 at 11:07:24AM +0300, Dominique Leuenberger wrote : > > Maybe a small heads up on what new build deps we should add to the new > > version would be great: like what new things since 1.0.6 became optional > > dependencies for added feature set? > Dominique, > > I believe the biggest changes, packager side are: Jean-Baptiste, > - all xcb plugins, please see if you have all of them built, I have those in the package at the moment: (containing xcb in the name) /usr/lib64/vlc/plugins/video_output/libxcb_glx_plugin.so /usr/lib64/vlc/plugins/access/libxcb_screen_plugin.so /usr/lib64/vlc/plugins/services_discovery/libxcb_apps_plugin.so /usr/lib64/vlc/plugins/video_output/libxcb_window_plugin.so /usr/lib64/vlc/plugins/video_output/libxcb_x11_plugin.so /usr/lib64/vlc/plugins/video_output/libxcb_xv_plugin.so > - alsa should be at the latest version possible, alsa is part of the distribution and as per regular distro policy, not supposed to be touched by external repos. > - libudev is now used Got that enabled for openSUSE 11.1 and newer (leaving 11.0 out; udev is too old there) > - VAAPI if you can. Uhhh.. will have to look into that. Any starting pointers you can give? Thanks for all your great works and help! Dominique From remi at remlab.net Tue Jun 8 00:01:30 2010 From: remi at remlab.net (=?iso-8859-1?q?R=E9mi?= Denis-Courmont) Date: Tue, 8 Jun 2010 01:01:30 +0300 Subject: [vlc-devel] [PACKAGERS] Tag 1.1.0-rc2 In-Reply-To: <1275946547.1367.3.camel@3120-2914.ams.tmf-group.com> References: <20100603134551.5A800E83CA@albiero.videolan.org> <20100607195947.GA14405@videolan.org> <1275946547.1367.3.camel@3120-2914.ams.tmf-group.com> Message-ID: <201006080101.30620.remi@remlab.net> Le mardi 8 juin 2010 00:35:47 Dominique Leuenberger, vous avez ?crit : > > - alsa should be at the latest version possible, > > alsa is part of the distribution and as per regular distro policy, not > supposed to be touched by external repos. Well, I did not know OpenSUSE users were all deaf. libasound < 1.0.24 has known bugs that are "not unlikely" to prevent audio output, unless PulseAudio is used instead. You can't expect VLC to fix ALSA bugs. -- R?mi Denis-Courmont http://www.remlab.net/ http://fi.linkedin.com/in/remidenis From remi at remlab.net Tue Jun 8 00:04:33 2010 From: remi at remlab.net (=?iso-8859-1?q?R=E9mi?= Denis-Courmont) Date: Tue, 8 Jun 2010 01:04:33 +0300 Subject: [vlc-devel] [PACKAGERS] Tag 1.1.0-rc2 In-Reply-To: <20100607195947.GA14405@videolan.org> References: <20100603134551.5A800E83CA@albiero.videolan.org> <20100607110724.20472lz93jnl2ri8@webmail.leuenberger.net> <20100607195947.GA14405@videolan.org> Message-ID: <201006080104.34204.remi@remlab.net> Le lundi 7 juin 2010 22:59:47 Jean-Baptiste Kempf, vous avez ?crit : > I believe the biggest changes, packager side are: > - all xcb plugins, please see if you have all of them built, And all the libXext stuff (DPMS, XVideo, XvMC, Xinerama, XF86VidMod) is not needed. We still need plain libX11 though. > - libudev is now used Conversely, libhal is dropped. -- R?mi Denis-Courmont http://www.remlab.net/ http://fi.linkedin.com/in/remidenis From dominique at leuenberger.net Tue Jun 8 00:37:28 2010 From: dominique at leuenberger.net (Dominique Leuenberger) Date: Tue, 08 Jun 2010 00:37:28 +0200 Subject: [vlc-devel] [PACKAGERS] Tag 1.1.0-rc2 In-Reply-To: <201006080101.30620.remi@remlab.net> References: <20100603134551.5A800E83CA@albiero.videolan.org> <20100607195947.GA14405@videolan.org> <1275946547.1367.3.camel@3120-2914.ams.tmf-group.com> <201006080101.30620.remi@remlab.net> Message-ID: <1275950248.1367.10.camel@3120-2914.ams.tmf-group.com> On Tue, 2010-06-08 at 01:01 +0300, R?mi Denis-Courmont wrote: > Le mardi 8 juin 2010 00:35:47 Dominique Leuenberger, vous avez ?crit : > > > - alsa should be at the latest version possible, > > > > alsa is part of the distribution and as per regular distro policy, not > > supposed to be touched by external repos. > > Well, I did not know OpenSUSE users were all deaf. libasound < 1.0.24 has > known bugs that are "not unlikely" to prevent audio output, unless PulseAudio > is used instead. You can't expect VLC to fix ALSA bugs. > every software at a release < $current has known bugs, nothing new there. We are all aware than even vlc has some :) Nevertheless, I think it's rather surprising that all the users of openSUSE 11.0 had sound up to now then; seems alsa is not THAT broken. 1.0.24 is rather a high target though: even openSUSE 11.3, which is in RC phase and thus frozen, will only have 1.0.23 (which is not too bad, considering 1.0.23 was released in April 2010... and 1.0.24 is not even out yet!) Sorry, but for any distribution, vlc is a leaf package and invalidating the entire testing effort by just ripping out low-level libraries is really not the way anybody should want to push anything. Yes, it might work, and yes, I know of cases in the past where it did not work that flawless neither. Versions of alsa in the current openSUSE distributions: 11.0 -> 1.0.16 11.1 -> 1.0.18 11.2 -> 1.0.21 11.3 -> 1.0.23 (11.3 will be released in July) 11.0 is falling out of the official support cycle in a few months, so I don't really care for that anymore. Dominique From jb at videolan.org Tue Jun 8 01:12:23 2010 From: jb at videolan.org (Jean-Baptiste Kempf) Date: Tue, 8 Jun 2010 01:12:23 +0200 Subject: [vlc-devel] [Patch 2/2] Cleaned up code to match code conventions. In-Reply-To: <00b901cb0689$527e82a0$f77b87e0$@com> References: <00b901cb0689$527e82a0$f77b87e0$@com> Message-ID: <20100607231223.GA21463@videolan.org> On Mon, Jun 07, 2010 at 04:35:13PM -0500, Austin Burrow wrote : > Patch is attached. Applied. Best Regards, -- Jean-Baptiste Kempf http://www.jbkempf.com/ From jb at videolan.org Tue Jun 8 01:12:35 2010 From: jb at videolan.org (Jean-Baptiste Kempf) Date: Tue, 8 Jun 2010 01:12:35 +0200 Subject: [vlc-devel] [Patch 1/2] Cleaned up code so it goes by the code conventions. *revised* In-Reply-To: <00b401cb0687$1e79c700$5b6d5500$@com> References: <00b401cb0687$1e79c700$5b6d5500$@com> Message-ID: <20100607231235.GB21463@videolan.org> On Mon, Jun 07, 2010 at 04:19:29PM -0500, Austin Burrow wrote : > I re-uploaded the patch at http://vlc.pastebin.com/WR5t7xUV Applied. Best Regards, -- Jean-Baptiste Kempf http://www.jbkempf.com/ From cguthrie at mandriva.org Tue Jun 8 01:34:43 2010 From: cguthrie at mandriva.org (Colin Guthrie) Date: Tue, 8 Jun 2010 00:34:43 +0100 Subject: [vlc-devel] [PATCH 1/3] pulse: Use the 'user-agent' variable for the client name. In-Reply-To: <1275953685-25662-1-git-send-email-cguthrie@mandriva.org> References: <1275953685-25662-1-git-send-email-cguthrie@mandriva.org> Message-ID: <1275953685-25662-2-git-send-email-cguthrie@mandriva.org> --- modules/audio_output/pulse.c | 12 +++++++++--- 1 files changed, 9 insertions(+), 3 deletions(-) diff --git a/modules/audio_output/pulse.c b/modules/audio_output/pulse.c index e7c7450..0a6b2e0 100644 --- a/modules/audio_output/pulse.c +++ b/modules/audio_output/pulse.c @@ -63,8 +63,6 @@ struct aout_sys_t mtime_t start_date; }; -#define PULSE_CLIENT_NAME N_("VLC media player") - #if 0 #define PULSE_DEBUG( ...) \ msg_Dbg( p_aout, __VA_ARGS__ ) @@ -121,6 +119,7 @@ static int Open ( vlc_object_t *p_this ) const struct pa_buffer_attr *buffer_attr; struct pa_buffer_attr a; struct pa_channel_map map; + char * p_client_name = NULL; if( !vlc_xlib_init( p_this ) ) return VLC_EGENERIC; @@ -210,7 +209,12 @@ static int Open ( vlc_object_t *p_this ) goto fail; } - if (!(p_sys->context = pa_context_new(pa_threaded_mainloop_get_api(p_sys->mainloop), _( PULSE_CLIENT_NAME )))) { + if ((p_client_name = var_InheritString(p_aout, "user-agent")) == NULL) { + msg_Err(p_aout, "No user-agent string available."); + goto fail; + } + + if (!(p_sys->context = pa_context_new(pa_threaded_mainloop_get_api(p_sys->mainloop), p_client_name))) { msg_Err(p_aout, "Failed to allocate context"); goto fail; } @@ -303,6 +307,8 @@ unlock_and_fail: if (p_sys->mainloop) pa_threaded_mainloop_unlock(p_sys->mainloop); fail: + if (p_client_name) + free(p_client_name); msg_Dbg(p_aout, "Pulse initialization failed"); uninit(p_aout); return VLC_EGENERIC; -- 1.7.1 From cguthrie at mandriva.org Tue Jun 8 01:34:42 2010 From: cguthrie at mandriva.org (Colin Guthrie) Date: Tue, 8 Jun 2010 00:34:42 +0100 Subject: [vlc-devel] [PATCH] Use the user-agent in PulseAudio output Message-ID: <1275953685-25662-1-git-send-email-cguthrie@mandriva.org> This small patchset builds on earlier work to add support for a --user-agent option. I have tested this option with UTF8 encoded data and it works well. From cguthrie at mandriva.org Tue Jun 8 01:34:45 2010 From: cguthrie at mandriva.org (Colin Guthrie) Date: Tue, 8 Jun 2010 00:34:45 +0100 Subject: [vlc-devel] [PATCH 3/3] pulse: Trivial compiler warning fixes in debug mode In-Reply-To: <1275953685-25662-1-git-send-email-cguthrie@mandriva.org> References: <1275953685-25662-1-git-send-email-cguthrie@mandriva.org> Message-ID: <1275953685-25662-4-git-send-email-cguthrie@mandriva.org> --- modules/audio_output/pulse.c | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/audio_output/pulse.c b/modules/audio_output/pulse.c index 0a6b2e0..c374bbe 100644 --- a/modules/audio_output/pulse.c +++ b/modules/audio_output/pulse.c @@ -460,7 +460,7 @@ static void stream_request_cb(pa_stream *s, size_t length, void *userdata) { size_t buffer_size = p_sys->buffer_size; - PULSE_DEBUG( "Pulse stream request %d", length); + PULSE_DEBUG( "Pulse stream request %d", (int)length); do{ aout_buffer_t * p_buffer = NULL; @@ -485,7 +485,7 @@ static void stream_request_cb(pa_stream *s, size_t length, void *userdata) { if ( p_buffer != NULL ) { - PULSE_DEBUG( "Pulse stream request write buffer %d", p_buffer->i_buffer); + PULSE_DEBUG( "Pulse stream request write buffer %d", (int)p_buffer->i_buffer); pa_stream_write(p_sys->stream, p_buffer->p_buffer, p_buffer->i_buffer, NULL, 0, PA_SEEK_RELATIVE); length -= p_buffer->i_buffer; aout_BufferFree( p_buffer ); -- 1.7.1 From cguthrie at mandriva.org Tue Jun 8 01:34:44 2010 From: cguthrie at mandriva.org (Colin Guthrie) Date: Tue, 8 Jun 2010 00:34:44 +0100 Subject: [vlc-devel] [PATCH 2/3] Do not surround the default user-agent in quotes. In-Reply-To: <1275953685-25662-1-git-send-email-cguthrie@mandriva.org> References: <1275953685-25662-1-git-send-email-cguthrie@mandriva.org> Message-ID: <1275953685-25662-3-git-send-email-cguthrie@mandriva.org> The quotes are actually parsed as part of the string, so just miss them out. --- bin/vlc.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/bin/vlc.c b/bin/vlc.c index 5b2259d..e6085e5 100644 --- a/bin/vlc.c +++ b/bin/vlc.c @@ -154,7 +154,7 @@ int main( int i_argc, const char *ppsz_argv[] ) int argc = 0; argv[argc++] = "--no-ignore-config"; - argv[argc++] = "--user-agent=\"VLC media player\""; + argv[argc++] = "--user-agent=VLC media player"; #ifdef TOP_BUILDDIR argv[argc++] = FromLocale ("--plugin-path="TOP_BUILDDIR"/modules"); #endif -- 1.7.1 From xtophe at chewa.net Tue Jun 8 02:27:45 2010 From: xtophe at chewa.net (Christophe Mutricy) Date: Tue, 8 Jun 2010 02:27:45 +0200 Subject: [vlc-devel] [PATCH 3/3] pulse: Trivial compiler warning fixes in debug mode In-Reply-To: <1275953685-25662-4-git-send-email-cguthrie@mandriva.org> References: <1275953685-25662-1-git-send-email-cguthrie@mandriva.org> <1275953685-25662-4-git-send-email-cguthrie@mandriva.org> Message-ID: <20100608002745.GK30509@chewa.net> On Tue, Jun 08, 10 at 00:34 +0100, Colin Guthrie wrote: > - PULSE_DEBUG( "Pulse stream request %d", length); > + PULSE_DEBUG( "Pulse stream request %d", (int)length); Better use %zu than casting. (See http://www.remlab.net/op/integer.shtml) -- Xtophe From jakob.leben at gmail.com Tue Jun 8 02:42:52 2010 From: jakob.leben at gmail.com (Jakob Leben) Date: Tue, 8 Jun 2010 02:42:52 +0200 Subject: [vlc-devel] Services Discovery interface upgrade Message-ID: Hello world, I propose the change / addition / upgrade to Services Discovery interface as indicated by the attached patch to vlc_services_discovery.h, which addresses issues that I have come across when working on and dealing with the current SD and playlist implementation. Most notably it allows the following three features: - SD modules can publish items in unlimited depth of hierarchy - It is on clients to decide whether and when they want the SD to fetch and fill the children of a particular parent item. - It allows SD clients to distinguish pure container items from others that can actually be played. As a bonus cool feature that I don't really see an actual purpose yet :), it allows SD modules to provide items within their item tree that are obtained and controlled from other SD modules. A detailed explanation of the proposed functionality is in the patch, but I also post it here for instant preview. You are very welcome to comment and to constructively brainstorm on any conflicting SD usage case that I might not have foreseen or anything that might be an obstacle to implementation of the proposed interface. Please note that this is rather a sketch proposal than an actual patch to be applied. Best regards, J.L. /****************************************************************************** VLC Services Discovery Protocol: A SD client creates and starts a SD service. The service will provide a tree structure of nodes of type sd_node_t that may or may not be associated with actual playable items at their p_input_item field. The b_is_container field of a node indicates if any children can be provided for that node. Typically, container nodes will not themselves be associated with any playable items (p_input_item == NULL). The method by which the service provides nodes is as follows: The service fills a particular parent node with children only AFTER the client requests so with services_discovery_Fetch(). If b_is_container field of the (parent) node is false then trying to fetch children should do nothing, and the opposite: the service should set the field to true if children can be provided for that particular (parent) node. For every child node provided, the system will emit an "item-added" event. The b_has_live_update field of a node indicates that the service is able to spontaneously and continuously update the set of node's children AFTER the children have first been fetched AND the client has requested updating with services_discovery_SwitchLiveUpdate(... , true). For every child node added/removed an "item-added"/"item-removed" event will be emitted. Already when started up, the service provides the abstract root node at its p_root field, of which children will be the actual meaningful nodes. Except for i_children, pp_children and p_parent, no fields of sd_node_t should be modified after it has been "published" by the service. *******************************************************************************/ -------------- next part -------------- An HTML attachment was scrubbed... URL: -------------- next part -------------- A non-text attachment was scrubbed... Name: 0001-SD-API.patch Type: text/x-diff Size: 5515 bytes Desc: not available URL: From ajmas at sympatico.ca Tue Jun 8 03:01:26 2010 From: ajmas at sympatico.ca (Andre-John Mas) Date: Mon, 7 Jun 2010 21:01:26 -0400 Subject: [vlc-devel] Adding support for 'twos' audio codec? Message-ID: Hi, If we want to have support for the "twos" audio codec (used by certain JVC cameras), added to VLC would make more sense to do the work in VLC or ffmpeg. I ask so that the ticket can be opened up in the right place. Andr? From ramiro.polla at gmail.com Tue Jun 8 03:05:00 2010 From: ramiro.polla at gmail.com (Ramiro Polla) Date: Mon, 7 Jun 2010 22:05:00 -0300 Subject: [vlc-devel] Adding support for 'twos' audio codec? In-Reply-To: References: Message-ID: On Mon, Jun 7, 2010 at 10:01 PM, Andre-John Mas wrote: > If we want to have support for the "twos" audio codec (used by certain JVC cameras), added to VLC would make more sense to do the work in VLC or ffmpeg. I ask so that the ticket can be opened up in the right place. In FFmpeg. But you didn't provide any more meaningful information about the codec. We would need at the very least a sample file, or spec, or binary decoder... From ajmas at sympatico.ca Tue Jun 8 06:00:35 2010 From: ajmas at sympatico.ca (Andre-John Mas) Date: Tue, 8 Jun 2010 00:00:35 -0400 Subject: [vlc-devel] Adding support for 'twos' audio codec? In-Reply-To: References: Message-ID: On 7-Jun-2010, at 21:05, Ramiro Polla wrote: > On Mon, Jun 7, 2010 at 10:01 PM, Andre-John Mas wrote: >> If we want to have support for the "twos" audio codec (used by certain JVC cameras), added to VLC would make more sense to do the work in VLC or ffmpeg. I ask so that the ticket can be opened up in the right place. > > In FFmpeg. But you didn't provide any more meaningful information > about the codec. We would need at the very least a sample file, or > spec, or binary decoder... Thanks for the clarification. I have asked the person who has the JVC camcorder to send me a sample of the video which was using this audio codec. I will be adding it to the ffmpeg ticket as soon as I get it. Andr? From jmenon86 at gmail.com Tue Jun 8 06:53:20 2010 From: jmenon86 at gmail.com (Jai Menon) Date: Tue, 8 Jun 2010 10:23:20 +0530 Subject: [vlc-devel] Adding support for 'twos' audio codec? In-Reply-To: References: Message-ID: On Tue, Jun 8, 2010 at 6:31 AM, Andre-John Mas wrote: > Hi, > > If we want to have support for the "twos" audio codec (used by certain JVC cameras) Isn't that just raw pcm? -- Jai Menon From ileoo at videolan.org Tue Jun 8 07:40:10 2010 From: ileoo at videolan.org (Ilkka Ollakka) Date: Tue, 8 Jun 2010 08:40:10 +0300 Subject: [vlc-devel] [PATCH 1/3] pulse: Use the 'user-agent' variable for the client name. In-Reply-To: <1275953685-25662-2-git-send-email-cguthrie@mandriva.org> References: <1275953685-25662-1-git-send-email-cguthrie@mandriva.org> <1275953685-25662-2-git-send-email-cguthrie@mandriva.org> Message-ID: <20100608054009.GE25090@linux-3azp> On Tue, Jun 08, 2010 at 12:34:43AM +0100, Colin Guthrie wrote: > --- > modules/audio_output/pulse.c | 12 +++++++++--- > 1 files changed, 9 insertions(+), 3 deletions(-) Thanks for your patch applied in 6b710a60659752ef22f404bad116bd2d7c78ce1c > fail: > + if (p_client_name) > + free(p_client_name); You don't need to check p_client_name here before free. -- Ilkka Ollakka No animal should ever jump on the dining room furniture unless absolutely certain he can hold his own in conversation. -- Fran Lebowitz -------------- next part -------------- A non-text attachment was scrubbed... Name: not available Type: application/pgp-signature Size: 490 bytes Desc: not available URL: From kaarlo.raiha at gmail.com Tue Jun 8 08:54:47 2010 From: kaarlo.raiha at gmail.com (=?ISO-8859-1?B?S2FhcmxvIFLkaWjk?=) Date: Tue, 8 Jun 2010 09:54:47 +0300 Subject: [vlc-devel] Adding support for 'twos' audio codec? In-Reply-To: References: Message-ID: IIRC twos is supported (or at least it works under Win32). 2010/6/8 Jai Menon > On Tue, Jun 8, 2010 at 6:31 AM, Andre-John Mas wrote: > > Hi, > > > > If we want to have support for the "twos" audio codec (used by certain > JVC cameras) > > Isn't that just raw pcm? > > -- > Jai Menon > _______________________________________________ > vlc-devel mailing list > To unsubscribe or modify your subscription options: > http://mailman.videolan.org/listinfo/vlc-devel > -------------- next part -------------- An HTML attachment was scrubbed... URL: From jmenon86 at gmail.com Tue Jun 8 09:01:03 2010 From: jmenon86 at gmail.com (Jai Menon) Date: Tue, 8 Jun 2010 12:31:03 +0530 Subject: [vlc-devel] Adding support for 'twos' audio codec? In-Reply-To: References: Message-ID: On Tue, Jun 8, 2010 at 12:24 PM, Kaarlo R?ih? wrote: > IIRC twos is supported (or at least it works under Win32). Does http://samples.mplayerhq.hu/A-codecs/twos/5512hz_pcm.mov work for you? -- Jai Menon From jmenon86 at gmail.com Tue Jun 8 09:43:07 2010 From: jmenon86 at gmail.com (Jai Menon) Date: Tue, 8 Jun 2010 13:13:07 +0530 Subject: [vlc-devel] Adding support for 'twos' audio codec? In-Reply-To: References: Message-ID: On Tue, Jun 8, 2010 at 12:31 PM, Jai Menon wrote: > On Tue, Jun 8, 2010 at 12:24 PM, Kaarlo R?ih? wrote: >> IIRC twos is supported (or at least it works under Win32). > > Does http://samples.mplayerhq.hu/A-codecs/twos/5512hz_pcm.mov work for you? I think the problem with this sample is related to resampling. If it works for you, then I'd be curious... -- Jai Menon From gmane at colin.guthr.ie Tue Jun 8 09:49:19 2010 From: gmane at colin.guthr.ie (Colin Guthrie) Date: Tue, 08 Jun 2010 08:49:19 +0100 Subject: [vlc-devel] [PATCH 3/3] pulse: Trivial compiler warning fixes in debug mode In-Reply-To: <20100608002745.GK30509@chewa.net> References: <1275953685-25662-1-git-send-email-cguthrie@mandriva.org> <1275953685-25662-4-git-send-email-cguthrie@mandriva.org> <20100608002745.GK30509@chewa.net> Message-ID: 'Twas brillig, and Christophe Mutricy at 08/06/10 01:27 did gyre and gimble: > On Tue, Jun 08, 10 at 00:34 +0100, Colin Guthrie wrote: >> - PULSE_DEBUG( "Pulse stream request %d", length); >> + PULSE_DEBUG( "Pulse stream request %d", (int)length); > > Better use %zu than casting. (See > http://www.remlab.net/op/integer.shtml) Ahh yeah. OK, ignore that patch then :) Col -- Colin Guthrie gmane(at)colin.guthr.ie http://colin.guthr.ie/ Day Job: Tribalogic Limited [http://www.tribalogic.net/] Open Source: Mandriva Linux Contributor [http://www.mandriva.com/] PulseAudio Hacker [http://www.pulseaudio.org/] Trac Hacker [http://trac.edgewall.org/] From remi at remlab.net Tue Jun 8 10:17:48 2010 From: remi at remlab.net (=?UTF-8?Q?R=C3=A9mi_Denis-Courmont?=) Date: Tue, 08 Jun 2010 10:17:48 +0200 Subject: [vlc-devel] [PACKAGERS] Tag 1.1.0-rc2 In-Reply-To: <1275950248.1367.10.camel@3120-2914.ams.tmf-group.com> References: <20100603134551.5A800E83CA@albiero.videolan.org> <20100607195947.GA14405@videolan.org> <1275946547.1367.3.camel@3120-2914.ams.tmf-group.com> <201006080101.30620.remi@remlab.net> <1275950248.1367.10.camel@3120-2914.ams.tmf-group.com> Message-ID: On Tue, 08 Jun 2010 00:37:28 +0200, Dominique Leuenberger wrote: > every software at a release < $current has known bugs, nothing new > there. We are all aware than even vlc has some :) > > Nevertheless, I think it's rather surprising that all the users of > openSUSE 11.0 had sound up to now then; seems alsa is not THAT broken. libasound2 <= 1.0.21a usually fails to render any sound after VLC switches to the "next" media item. libasound2 <= 1.0.23 reportedly fails completely if the user has an alsa configuration file and a non-UTF-8 locale. You might survive with libasound 1.0.22, but anything older is a complete non-starter for VLC 1.1. > Sorry, but for any distribution, vlc is a leaf package and invalidating > the entire testing effort by just ripping out low-level libraries is > really not the way anybody should want to push anything. So what? A distro is useless without leaf application packages. > Yes, it might work, and yes, I know of cases in the past where > it did not work that flawless neither. It will _not_ work. If your distro is that bad that it cannot backport libasound fixes, then you might as well bundle the fixed version statically in VLC. Or then, have fun with all the support requests. -- R?mi Denis-Courmont http://www.remlab.net http://fi.linkedin.com/in/remidenis From remi at remlab.net Tue Jun 8 10:19:46 2010 From: remi at remlab.net (=?UTF-8?Q?R=C3=A9mi_Denis-Courmont?=) Date: Tue, 08 Jun 2010 10:19:46 +0200 Subject: [vlc-devel] [PATCH 3/3] pulse: Trivial compiler warning fixes in debug mode In-Reply-To: <1275953685-25662-4-git-send-email-cguthrie@mandriva.org> References: <1275953685-25662-1-git-send-email-cguthrie@mandriva.org> <1275953685-25662-4-git-send-email-cguthrie@mandriva.org> Message-ID: <5890cdb4e286fca63e2ca8790ef3eb7f@chewa.net> On Tue, 8 Jun 2010 00:34:45 +0100, Colin Guthrie wrote: > --- > modules/audio_output/pulse.c | 4 ++-- > 1 files changed, 2 insertions(+), 2 deletions(-) > > diff --git a/modules/audio_output/pulse.c b/modules/audio_output/pulse.c > index 0a6b2e0..c374bbe 100644 > --- a/modules/audio_output/pulse.c > +++ b/modules/audio_output/pulse.c > @@ -460,7 +460,7 @@ static void stream_request_cb(pa_stream *s, size_t > length, void *userdata) { > > size_t buffer_size = p_sys->buffer_size; > > - PULSE_DEBUG( "Pulse stream request %d", length); > + PULSE_DEBUG( "Pulse stream request %d", (int)length); No need to cast. Please use %zu instead of %d. -- R?mi Denis-Courmont http://www.remlab.net http://fi.linkedin.com/in/remidenis From jb at videolan.org Tue Jun 8 10:53:09 2010 From: jb at videolan.org (Jean-Baptiste Kempf) Date: Tue, 8 Jun 2010 10:53:09 +0200 Subject: [vlc-devel] Adding support for 'twos' audio codec? In-Reply-To: References: Message-ID: <20100608085309.GA31457@videolan.org> On Tue, Jun 08, 2010 at 10:23:20AM +0530, Jai Menon wrote : > On Tue, Jun 8, 2010 at 6:31 AM, Andre-John Mas wrote: > > Hi, > > > > If we want to have support for the "twos" audio codec (used by certain JVC cameras) > > Isn't that just raw pcm? Yes it is. 'twos' and 'sowt' are usually supported by VLC, but some variation of it don't. JVC must have a new stupid variation. Best Regards, -- Jean-Baptiste Kempf http://www.jbkempf.com/ From linkfanel at yahoo.fr Tue Jun 8 11:14:27 2010 From: linkfanel at yahoo.fr (Pierre Ynard) Date: Tue, 8 Jun 2010 11:14:27 +0200 Subject: [vlc-devel] [PACKAGERS] Tag 1.1.0-rc2 In-Reply-To: <20100607044218.4DEF786@resin09.mta.everyone.net> Message-ID: <20100608091427.GA3010@via.ecp.fr> > additionnaly I have some problems generating on windows (cygwin based), > because some files are missing: > - for compiling: > ./include/vlc_windows_interfaces.h > ./projects/activex/position.h This should be fixed, thanks for the report. > - for make package-win32: > ./share/lua/extensions/imdb.lua > ./share/lua/extensions/README.txt It appears that the lua extensions were not distributed/installed at all in share/Makefile.am ... along with several lua playlist scripts that were missing. I put them all in the Makefile.am so it should be fixed too now. Regards, -- Pierre Ynard "Une ?me dans un corps, c'est comme un dessin sur une feuille de papier." From jakob.leben at gmail.com Tue Jun 8 18:05:22 2010 From: jakob.leben at gmail.com (Jakob Leben) Date: Tue, 8 Jun 2010 18:05:22 +0200 Subject: [vlc-devel] Services Discovery interface upgrade In-Reply-To: References: Message-ID: On Tue, Jun 8, 2010 at 2:42 AM, Jakob Leben wrote: > I propose the change / addition / upgrade to Services Discovery interface > as indicated by the attached patch to vlc_services_discovery.h, which > addresses issues that I have come across when working on and dealing with > the current SD and playlist implementation. > > Here is the revised patch with corrections of some anomalies discovered when working on a proto-implementation. It also includes declarations of new types and events in vlc_common.h and vlc_events.h. I am thinking of dropping the constraint that live-updating can only be enabled on a node after its children have been fetched. To further clarify the scope and impact of the proposed SD interface: Since we would have SD item trees composed of sd_node_t, we'd no longer need to use SD through playlist. Instead, playlist would not be a client of SD anymore, but all the former clients of playlist's SD support should become immediate clients of SD. Best, J. -------------- next part -------------- An HTML attachment was scrubbed... URL: -------------- next part -------------- A non-text attachment was scrubbed... Name: 0001-SD-API.patch Type: text/x-diff Size: 7122 bytes Desc: not available URL: From bjorn at haxx.se Tue Jun 8 20:37:13 2010 From: bjorn at haxx.se (=?iso-8859-1?Q?Bj=F6rn?= Stenberg) Date: Tue, 8 Jun 2010 20:37:13 +0200 Subject: [vlc-devel] [PATCH] dvbsub.c : Don't fill region if page_state == 0 Message-ID: <20100608183713.GC8419@giant> Hi. I've been working a little with DVB subtitling and found that if the region_fill bit is set, vlc always fills the whole area on every region update and thus overwrites any data previously rendered. This behaviour breaks "live" subtitling where words are recieved one at a time and added to an existing region. My interpretation of ETSI EN 300 743 is that the region_fill_flag of a region composition segment should not cause the region to be filled when the containing page composition segment has its' page_state variable set to 0 (page update). I suggest something like this: diff --git a/modules/codec/dvbsub.c b/modules/codec/dvbsub.c index fb7619c..2882dbc 100644 --- a/modules/codec/dvbsub.c +++ b/modules/codec/dvbsub.c @@ -840,7 +840,8 @@ static void decode_region_composition( decoder_t *p_dec, int i_segment_length, i_processed_length, i_id, i_version; int i_width, i_height, i_level_comp, i_depth, i_clut; int i_8_bg, i_4_bg, i_2_bg; - bool b_fill; + bool b_region_fill, b_fill = false; + decoder_page_t *p_page = p_sys->p_page; i_segment_length = bs_read( s, 16 ); i_id = bs_read( s, 8 ); @@ -877,7 +878,7 @@ static void decode_region_composition( decoder_t *p_dec, /* Region attributes */ p_region->i_id = i_id; p_region->i_version = i_version; - b_fill = bs_read( s, 1 ); + b_region_fill = bs_read( s, 1 ); bs_skip( s, 3 ); /* Reserved */ i_width = bs_read( s, 16 ); @@ -917,6 +918,10 @@ static void decode_region_composition( decoder_t *p_dec, p_region->i_depth = 0; b_fill = true; } + else + if (b_region_fill && p_page->page_state != 0) + b_fill = true; + if( p_region->i_depth && ( ( p_region->i_depth != i_depth ) || ( p_region->i_level_comp != i_level_comp ) || -- Bj?rn From ileoo at videolan.org Tue Jun 8 23:11:04 2010 From: ileoo at videolan.org (Ilkka Ollakka) Date: Wed, 9 Jun 2010 00:11:04 +0300 Subject: [vlc-devel] Updated patch for ogg/theora seeking In-Reply-To: References: <20100607061402.GA4860@linux-3azp> <20100607191537.GB25090@linux-3azp> <20100607201236.GC25090@linux-3azp> <20100607202829.GD25090@linux-3azp> Message-ID: <20100608211103.GF25090@linux-3azp> On Tue, Jun 08, 2010 at 11:57:54AM -0300, salsaman wrote: > OK, this iteration of the patch should fix all of the issues previously > mentioned. > I think there may be a bug elsewhere in vlc, because if the stream is not > seekable, attempts to seek now return VLC_EGENERIC. However playback hangs > anyway. If you tested that http-stream elephantsdream then that stream is seekable from access point of view. -- Ilkka Ollakka "I think sex is better than logic, but I can't prove it." -------------- next part -------------- A non-text attachment was scrubbed... Name: not available Type: application/pgp-signature Size: 490 bytes Desc: not available URL: From salsaman at gmail.com Tue Jun 8 23:23:37 2010 From: salsaman at gmail.com (salsaman) Date: Tue, 8 Jun 2010 18:23:37 -0300 Subject: [vlc-devel] Updated patch for ogg/theora seeking In-Reply-To: <20100608211103.GF25090@linux-3azp> References: <20100607061402.GA4860@linux-3azp> <20100607191537.GB25090@linux-3azp> <20100607201236.GC25090@linux-3azp> <20100607202829.GD25090@linux-3azp> <20100608211103.GF25090@linux-3azp> Message-ID: OK, so then there is no bug ? Or is there ? Now I am confused... Gabriel. http://lives.sourceforge.net https://www.ohloh.net/accounts/salsaman On Tue, Jun 8, 2010 at 6:11 PM, Ilkka Ollakka wrote: > On Tue, Jun 08, 2010 at 11:57:54AM -0300, salsaman wrote: > > OK, this iteration of the patch should fix all of the issues > previously > > mentioned. > > > I think there may be a bug elsewhere in vlc, because if the stream is > not > > seekable, attempts to seek now return VLC_EGENERIC. However playback > hangs > > anyway. > > If you tested that http-stream elephantsdream then that stream is > seekable from access point of view. > > -- > Ilkka Ollakka > "I think sex is better than logic, but I can't prove it." > > _______________________________________________ > vlc-devel mailing list > To unsubscribe or modify your subscription options: > http://mailman.videolan.org/listinfo/vlc-devel > > -------------- next part -------------- An HTML attachment was scrubbed... URL: From jb at videolan.org Tue Jun 8 23:26:56 2010 From: jb at videolan.org (Jean-Baptiste Kempf) Date: Tue, 8 Jun 2010 23:26:56 +0200 Subject: [vlc-devel] Updated patch for ogg/theora seeking In-Reply-To: References: <20100605195428.GY16350@chewa.net> <20100607061402.GA4860@linux-3azp> <20100607194255.GA9591@videolan.org> Message-ID: <20100608212656.GA18368@videolan.org> On Mon, Jun 07, 2010 at 05:13:33PM -0300, salsaman wrote : > >> p_sys->b_skip_frame = ( p_block->i_flags & BLOCK_FLAG_PREROLL ); > BLOCK_FLAG_PREROLL = 2 > Ooops !! Then !!( p_block->i_flags & BLOCK_FLAG_PREROLL ); But then, the gain might be discutable ;) Best Regards, -- Jean-Baptiste Kempf http://www.jbkempf.com/ From ileoo at videolan.org Wed Jun 9 00:17:00 2010 From: ileoo at videolan.org (Ilkka Ollakka) Date: Wed, 9 Jun 2010 01:17:00 +0300 Subject: [vlc-devel] Updated patch for ogg/theora seeking In-Reply-To: References: <20100607191537.GB25090@linux-3azp> <20100607201236.GC25090@linux-3azp> <20100607202829.GD25090@linux-3azp> <20100608211103.GF25090@linux-3azp> Message-ID: <20100608221700.GG25090@linux-3azp> On Tue, Jun 08, 2010 at 06:23:37PM -0300, salsaman wrote: > OK, so then there is no bug ? Or is there ? Now I am confused... There is a bug as with your patch the stream hangs when trying to seek, without it it works. -- Ilkka Ollakka Make it myself? But I'm a physical organic chemist! -------------- next part -------------- A non-text attachment was scrubbed... Name: not available Type: application/pgp-signature Size: 490 bytes Desc: not available URL: From salsaman at gmail.com Wed Jun 9 00:28:27 2010 From: salsaman at gmail.com (salsaman) Date: Tue, 8 Jun 2010 19:28:27 -0300 Subject: [vlc-devel] Updated patch for ogg/theora seeking In-Reply-To: <20100608221700.GG25090@linux-3azp> References: <20100607191537.GB25090@linux-3azp> <20100607201236.GC25090@linux-3azp> <20100607202829.GD25090@linux-3azp> <20100608211103.GF25090@linux-3azp> <20100608221700.GG25090@linux-3azp> Message-ID: Please check back in this thread. I asked how to tell if we are dealing with a stream or a file, and I was told to use stream_Control( stream_t *, STREAM_CAN_SEEK, &boolean ); That is what I have implemented. Regards, Gabriel. http://lives.sourceforge.net https://www.ohloh.net/accounts/salsaman On Tue, Jun 8, 2010 at 7:17 PM, Ilkka Ollakka wrote: > On Tue, Jun 08, 2010 at 06:23:37PM -0300, salsaman wrote: > > OK, so then there is no bug ? Or is there ? Now I am confused... > > There is a bug as with your patch the stream hangs when trying to seek, > without it it works. > > -- > Ilkka Ollakka > Make it myself? But I'm a physical organic chemist! > > _______________________________________________ > vlc-devel mailing list > To unsubscribe or modify your subscription options: > http://mailman.videolan.org/listinfo/vlc-devel > > -------------- next part -------------- An HTML attachment was scrubbed... URL: From fcvlcdev at free.fr Wed Jun 9 01:13:56 2010 From: fcvlcdev at free.fr (Francois Cartegnie) Date: Wed, 9 Jun 2010 01:13:56 +0200 Subject: [vlc-devel] [PATCH] Ignore unmute if volume hasn't been set or muted. fixes #3636 Message-ID: <1276038836-30314-1-git-send-email-fcvlcdev@free.fr> --- src/audio_output/intf.c | 11 +++++++++++ 1 files changed, 11 insertions(+), 0 deletions(-) diff --git a/src/audio_output/intf.c b/src/audio_output/intf.c index f7c0f48..493ad5c 100644 --- a/src/audio_output/intf.c +++ b/src/audio_output/intf.c @@ -122,6 +122,17 @@ int doVolumeChanges( unsigned action, vlc_object_t * p_object, int i_nb_steps, ( action == TOGGLE_MUTE ) )); + /* If muting or unmuting when play hasn't started */ + if ( action == SET_MUTE && !b_unmute_condition && !b_mute_condition ) + { + if ( p_aout ) + { + aout_unlock_volume( p_aout ); + vlc_object_release( p_aout ); + } + return i_result; + } + /* On UnMute */ if ( b_unmute_condition ) { -- 1.6.4.4 From atburrow at gmail.com Wed Jun 9 02:04:56 2010 From: atburrow at gmail.com (Austin Burrow) Date: Tue, 8 Jun 2010 19:04:56 -0500 Subject: [vlc-devel] Question about input_item_node_* functions In-Reply-To: References: <002801cb05f6$3e9bc240$bbd346c0$@com> Message-ID: <016701cb0767$66c14840$3443d8c0$@com> Thanks for your detailed response, that helped out a lot. The downside about using services_discovery_AddItem/services_discovery_RemoveItem is that the whole tree must be rebuilt causing it to flash when it is being rebuilt. This seems like it would add more frustration for the user as they would be unable to expand the tree while the server is pushing updates. An example would be if a person added a large folder (which contained subfolders) to MediaTomb. MediaTomb would then scan the directory constantly pushing updates. This could go on for minutes depending on how large the folder was. A solution could be to not display the list until it is built, but on the client side there is no way to know how big the list will be. A complete fix for this would be to have access to each node being displayed and having the option to remove it from the list, but as you said, input_item_node_* does not offer that capability, and services_discovery_RemoveItem will remove the whole list. Regards, Austin B From: vlc-devel-bounces at videolan.org [mailto:vlc-devel-bounces at videolan.org] On Behalf Of Jakob Leben Sent: Monday, June 07, 2010 6:57 AM To: Mailing list for VLC media player developers Subject: Re: [vlc-devel] Question about input_item_node_* functions On Mon, Jun 7, 2010 at 6:02 AM, Austin Burrow wrote: I had a quick question about the workings of input_item_node_* functions. Looking through the documentation and some code, I've pretty much figured out how to make an item node, but I was wondering how to remove an item from the actual list after you've done a call to input_item_node_PostAndDelete. I've looked around and found input_item_node_Delete, but it looks like that just deletes my locally created list before (or after) it was posted internally. For example, the upnp_intel SD module creates a list of UPnP servers and their sub-items, but when the UPnP servers rebroadcast their files, some files could be out of date but they aren't being removed from the tree list. Knowing the workings of input_item_node_* would help me fix this bug. Hi, Your observation about input_item_node_X is correct. An "input item node" with all it's children can either be posted and deleted or only deleted. After that, it is freed and inaccessible. Please note that input_item_node_t is not meant for continuous storage of information but only to pass information from a Playlist Demuxer to the VLC core. Usage of it for SD is anomalous anyway. SDs should instead use services_discovery_AddItem / services_discovery_RemoveItem. However, that only allows for two levels of item hierarchy, which is the reason for some SDs to go for other means of publishing their items. Anyway, if a SD needs to "un-publish" an item it has published, it should have internally (by it's own means and data structures) stored a reference to the input_item_t it has published and then call services_discovery_RemoveItem with that item as an argument. Best regards, J.L. -------------- next part -------------- An HTML attachment was scrubbed... URL: From atburrow at gmail.com Wed Jun 9 03:04:27 2010 From: atburrow at gmail.com (Austin Burrow) Date: Tue, 8 Jun 2010 20:04:27 -0500 Subject: [vlc-devel] [Patch 1/1] Fixed the directory duplication bug in UPnP SD Client and cleaned code. Message-ID: <016c01cb076f$b6ac2390$24046ab0$@com> Patch is attached. Regards, Austin Burrow -------------- next part -------------- An HTML attachment was scrubbed... URL: -------------- next part -------------- A non-text attachment was scrubbed... Name: 0003-Fixed-the-directory-duplication-bug-in-UPnP-SD-Clien.patch Type: application/octet-stream Size: 15733 bytes Desc: not available URL: From jakob.leben at gmail.com Wed Jun 9 03:31:26 2010 From: jakob.leben at gmail.com (Jakob Leben) Date: Wed, 9 Jun 2010 03:31:26 +0200 Subject: [vlc-devel] Question about input_item_node_* functions In-Reply-To: <016701cb0767$66c14840$3443d8c0$@com> References: <002801cb05f6$3e9bc240$bbd346c0$@com> <016701cb0767$66c14840$3443d8c0$@com> Message-ID: On Wed, Jun 9, 2010 at 2:04 AM, Austin Burrow wrote: > The downside about using > services_discovery_AddItem/services_discovery_RemoveItem is that the whole > tree must be rebuilt causing it to flash when it is being rebuilt. > > ... A complete fix for this would be to have access to each node being > displayed and having the option to remove it from the list, but as you said, > input_item_node_* does not offer that capability, and > services_discovery_RemoveItem will remove the whole list. > Sorry, I do not understand what you mean by "remove the whole list". The services_discovery_RemoveItem() should remove only the item given as argument plus all the item's children. If the whole tree of items currently presented is refreshed after adding and removing an item is very much GUI-dependent. In Qt GUI interface of VLC 1.1 and above the refreshing does not take place and any open node in a tree view stays open when an item is add or removed. I don't know about the Mac interface or other LibVLC clients. If I understand right, you are trying to fix something that appears as a bug in the upnp_intel VLC plugin? Could you please describe the issue better or post a bug report? Best regards, J.L. -------------- next part -------------- An HTML attachment was scrubbed... URL: From jakob.leben at gmail.com Wed Jun 9 03:59:06 2010 From: jakob.leben at gmail.com (Jakob Leben) Date: Wed, 9 Jun 2010 03:59:06 +0200 Subject: [vlc-devel] [Patch 1/1] Fixed the directory duplication bug in UPnP SD Client and cleaned code. In-Reply-To: <016c01cb076f$b6ac2390$24046ab0$@com> References: <016c01cb076f$b6ac2390$24046ab0$@com> Message-ID: Hi, Austin, Please keep formatting and cosmetic changes apart from those which introduce new code behavior - in different patches - so it is easier to evaluate it. On Wed, Jun 9, 2010 at 3:04 AM, Austin Burrow wrote: > + if ( _p_contents ) > + { > + delete _p_contents; > + services_discovery_RemoveItem( _p_sd, _p_input_item ); > + services_discovery_AddItem( _p_sd, _p_input_item, NULL ); > + } > If I get it right, you are rebuilding the whole item tree from top, right? Since created input items seem to be stored in the plugin ( p_container->setInputItem( p_input_item ) ), it seems to me that it allows for a better approach which would compare new and old items and only add/remove changes, even if the upnp server posts the whole list every time. -------------- next part -------------- An HTML attachment was scrubbed... URL: From jakob.leben at gmail.com Wed Jun 9 04:08:56 2010 From: jakob.leben at gmail.com (Jakob Leben) Date: Wed, 9 Jun 2010 04:08:56 +0200 Subject: [vlc-devel] [Patch 1/1] Fixed the directory duplication bug in UPnP SD Client and cleaned code. In-Reply-To: References: <016c01cb076f$b6ac2390$24046ab0$@com> Message-ID: On Wed, Jun 9, 2010 at 3:59 AM, Jakob Leben wrote: > If I get it right, you are rebuilding the whole item tree from top, right? > Since created input items seem to be stored in the plugin ( > p_container->setInputItem( p_input_item ) ), it seems to me that it allows > for a better approach which would compare new and old items and only > add/remove changes, even if the upnp server posts the whole list every time. > Oh, sorry, it took me to read your SoC page to get the point of your patch: you can not remove an item at hierarchy level lower than 2. Your patch appears to be currently the only solution. Best regards -------------- next part -------------- An HTML attachment was scrubbed... URL: From atburrow at gmail.com Wed Jun 9 04:14:55 2010 From: atburrow at gmail.com (Austin Burrow) Date: Tue, 8 Jun 2010 21:14:55 -0500 Subject: [vlc-devel] Question about input_item_node_* functions In-Reply-To: References: <002801cb05f6$3e9bc240$bbd346c0$@com> <016701cb0767$66c14840$3443d8c0$@com> Message-ID: <017801cb0779$90116f10$b0344d30$@com> Sorry, I will attempt to explain more clearly. I am a GSoC student working on the UPnP SD. One bug that I have found was that duplicate entries of the same directory would be shown under a server. For example: +MyUPnPServer |- My Directory |- My Directory As you can see, the second "My Directory" does not belong. This can be replicated by altering an item under "My Directory" on the UPnP server, causing the server to re-broadcast its contents. The UPnP client (in VLC) then rebuilds the directory and adds it to the list (under "MyUPnPServer"), not removing the old, outdated directory. The way to fix it would be to remove the old directory which is why I was asking about input_item_node_* and if it provided a means of deleting specific nodes. I took your advice and created a patch using services_discovery_RemoveItem, but it removes "MyUPnPServer" as well as all of its children. Once I remove it, I add "MyUPnPServer" to the list using services_discovery_AddItem. Once "MyUPnPServer" is added, I use input_item_node_* and input_item_* to create the directory tree. The caveat now is that it causes "MyUPnPServer" to flash, and the user is now required to go through the directory tree to find an item they are looking for. One solution would be to check each item from the old list and check if it's in the new list, if not, simply delete it and move on. But it is not possible with input_item_node_* and please correct me if I'm wrong, but it doesn't look like services_discovery_RemoveItem is capable of removing a sub-item of "MyUPnPServer" without removing "MyUPnPServer" as well. I hope this is more clear. Thanks again, Austin B From: vlc-devel-bounces at videolan.org [mailto:vlc-devel-bounces at videolan.org] On Behalf Of Jakob Leben Sent: Tuesday, June 08, 2010 8:31 PM To: Mailing list for VLC media player developers Subject: Re: [vlc-devel] Question about input_item_node_* functions On Wed, Jun 9, 2010 at 2:04 AM, Austin Burrow wrote: The downside about using services_discovery_AddItem/services_discovery_RemoveItem is that the whole tree must be rebuilt causing it to flash when it is being rebuilt. ... A complete fix for this would be to have access to each node being displayed and having the option to remove it from the list, but as you said, input_item_node_* does not offer that capability, and services_discovery_RemoveItem will remove the whole list. Sorry, I do not understand what you mean by "remove the whole list". The services_discovery_RemoveItem() should remove only the item given as argument plus all the item's children. If the whole tree of items currently presented is refreshed after adding and removing an item is very much GUI-dependent. In Qt GUI interface of VLC 1.1 and above the refreshing does not take place and any open node in a tree view stays open when an item is add or removed. I don't know about the Mac interface or other LibVLC clients. If I understand right, you are trying to fix something that appears as a bug in the upnp_intel VLC plugin? Could you please describe the issue better or post a bug report? Best regards, J.L. -------------- next part -------------- An HTML attachment was scrubbed... URL: From jakob.leben at gmail.com Wed Jun 9 04:35:00 2010 From: jakob.leben at gmail.com (Jakob Leben) Date: Wed, 9 Jun 2010 04:35:00 +0200 Subject: [vlc-devel] Question about input_item_node_* functions In-Reply-To: <017801cb0779$90116f10$b0344d30$@com> References: <002801cb05f6$3e9bc240$bbd346c0$@com> <016701cb0767$66c14840$3443d8c0$@com> <017801cb0779$90116f10$b0344d30$@com> Message-ID: On Wed, Jun 9, 2010 at 4:14 AM, Austin Burrow wrote: > One solution would be to check each item from the old list and check if > it's in the new list, if not, simply delete it and move on. But it is not > possible with input_item_node_* and please correct me if I'm wrong, but it > doesn't look like services_discovery_RemoveItem is capable of removing a > sub-item of "MyUPnPServer" without removing "MyUPnPServer" as well. Thanks for the explanation! No, indeed services_discovery_RemoveItem does allow removing any item at any level of hierarchy. But it will also delete the top node (in your example "MyUPnPServer", or the "category" node if you think of services_discovery_AddItem) when the last child of it is being deleted. (This functionality is necessary in a normal case when a SD module uses strictly only the two SD functions to add and remove items) So using services_discovery_RemoveItem( ) should work for you, but keeping in mind that the top node has to always contain at least 1 item if you don't want it to be removed. -------------- next part -------------- An HTML attachment was scrubbed... URL: From ajmas at sympatico.ca Wed Jun 9 05:10:54 2010 From: ajmas at sympatico.ca (Andre-John Mas) Date: Tue, 8 Jun 2010 23:10:54 -0400 Subject: [vlc-devel] Adding support for 'twos' audio codec? In-Reply-To: References: Message-ID: On 8-Jun-2010, at 03:01, Jai Menon wrote: > On Tue, Jun 8, 2010 at 12:24 PM, Kaarlo R?ih? wrote: >> IIRC twos is supported (or at least it works under Win32). > > Does http://samples.mplayerhq.hu/A-codecs/twos/5512hz_pcm.mov work for you? This one works for me when tested on MacOS X 10.6.3 and VLC 1.1.0-rc. The original support ticket that was opened by the user is: http://forum.videolan.org/viewtopic.php?f=12&t=76055 The codec is wrapped in a MPEG4 wrapper, along with an mpeg 2 video track. I still haven't got anything back from the user, so I can't even investigate things on my side. Andr?-John From ajmas at sympatico.ca Wed Jun 9 05:17:47 2010 From: ajmas at sympatico.ca (Andre-John Mas) Date: Tue, 8 Jun 2010 23:17:47 -0400 Subject: [vlc-devel] Adding support for 'twos' audio codec? In-Reply-To: References: Message-ID: On 8-Jun-2010, at 23:10, Andre-John Mas wrote: > > On 8-Jun-2010, at 03:01, Jai Menon wrote: > >> On Tue, Jun 8, 2010 at 12:24 PM, Kaarlo R?ih? wrote: >>> IIRC twos is supported (or at least it works under Win32). >> >> Does http://samples.mplayerhq.hu/A-codecs/twos/5512hz_pcm.mov work for you? > > This one works for me when tested on MacOS X 10.6.3 and VLC 1.1.0-rc. The original > support ticket that was opened by the user is: > > http://forum.videolan.org/viewtopic.php?f=12&t=76055 > > The codec is wrapped in a MPEG4 wrapper, along with an mpeg 2 video track. I still > haven't got anything back from the user, so I can't even investigate things on my > side. Never mind. I must have been tired and I mis-read the support request. Having just re-read it I see the issue is with Final Cut Pro and not VLC. Sorry about that. Andr? From ileoo at videolan.org Wed Jun 9 08:52:46 2010 From: ileoo at videolan.org (Ilkka Ollakka) Date: Wed, 9 Jun 2010 09:52:46 +0300 Subject: [vlc-devel] Updated patch for ogg/theora seeking In-Reply-To: References: <20100607191537.GB25090@linux-3azp> <20100607201236.GC25090@linux-3azp> <20100607202829.GD25090@linux-3azp> <20100608211103.GF25090@linux-3azp> <20100608221700.GG25090@linux-3azp> Message-ID: <20100609065246.GA32076@linux-3azp> On Tue, Jun 08, 2010 at 07:28:27PM -0300, salsaman wrote: > Please check back in this thread. I asked how to tell if we are dealing > with a stream or a file, and I was told to use stream_Control( stream_t *, > STREAM_CAN_SEEK, &boolean ); Hi, You don't really need to know if access has file or stream coming in do you? Seems that you just need to know if it can be seeked (fast in this case seems like the info you need ) so STREAM_CAN_FASTSEEK would tell you if seeking is really a fast one (like local files etc) or not (not able to seek, or slow seek like in http-case). I think there could be still seeking problem even with local files. I tried that elephantsdream as local file, and it behaved same as behind http, so maybe patch is missing some boundary limit, or I just had some other problem in that case. I'll try to test more tonight. -- Ilkka Ollakka "I've seen, I SAY, I've seen better heads on a mug of beer" -- Senator Claghorn -------------- next part -------------- A non-text attachment was scrubbed... Name: not available Type: application/pgp-signature Size: 490 bytes Desc: not available URL: From ileoo at videolan.org Wed Jun 9 09:02:31 2010 From: ileoo at videolan.org (Ilkka Ollakka) Date: Wed, 9 Jun 2010 10:02:31 +0300 Subject: [vlc-devel] [PATCH] dvbsub.c : Don't fill region if page_state == 0 In-Reply-To: <20100608183713.GC8419@giant> References: <20100608183713.GC8419@giant> Message-ID: <20100609070230.GB32076@linux-3azp> On Tue, Jun 08, 2010 at 08:37:13PM +0200, Bj?rn Stenberg wrote: > Hi. > I've been working a little with DVB subtitling and found that if the > region_fill bit is set, vlc always fills the whole area on every > region update and thus overwrites any data previously rendered. This > behaviour breaks "live" subtitling where words are recieved one at a > time and added to an existing region. Hi, Would it be possible you to provide some test clip on that? > My interpretation of ETSI EN 300 743 is that the region_fill_flag of a > region composition segment should not cause the region to be filled > when the containing page composition segment has its' page_state > variable set to 0 (page update). Maybe Meuuh/jpsaman/* can comment on this one, I don't have a clue > I suggest something like this: Please provide patch that applies and is against git-tree: http://wiki.videolan.org/Git#Submitting_patches_to_the_vlc-devel_or_x264-devel that would make applying patches much easier and faster. -- Ilkka Ollakka Garbage In -- Gospel Out. -------------- next part -------------- A non-text attachment was scrubbed... Name: not available Type: application/pgp-signature Size: 490 bytes Desc: not available URL: From remi at remlab.net Wed Jun 9 09:37:45 2010 From: remi at remlab.net (=?UTF-8?Q?R=C3=A9mi_Denis-Courmont?=) Date: Wed, 09 Jun 2010 09:37:45 +0200 Subject: [vlc-devel] [Patch 1/1] Fixed the directory duplication bug in UPnP SD Client and cleaned code. In-Reply-To: References: <016c01cb076f$b6ac2390$24046ab0$@com> Message-ID: <9937b83039d52e974ad758a0328f7121@chewa.net> On Wed, 9 Jun 2010 03:59:06 +0200, Jakob Leben wrote: > If I get it right, you are rebuilding the whole item tree from top, right? > Since created input items seem to be stored in the plugin ( > p_container->setInputItem( p_input_item ) ), it seems to me that it allows > for a better approach which would compare new and old items and only > add/remove changes, even if the upnp server posts the whole list every > time. Yes, this requires a lot more code in the SD plugin, but I doubt there is any other way. The udev and xcb_apps discovery plugins already follow that operational mode. -- R?mi Denis-Courmont http://www.remlab.net http://fi.linkedin.com/in/remidenis From remi at remlab.net Wed Jun 9 09:43:35 2010 From: remi at remlab.net (=?UTF-8?Q?R=C3=A9mi_Denis-Courmont?=) Date: Wed, 09 Jun 2010 09:43:35 +0200 Subject: [vlc-devel] [PATCH] Ignore unmute if volume hasn't been set or muted. fixes #3636 In-Reply-To: <1276038836-30314-1-git-send-email-fcvlcdev@free.fr> References: <1276038836-30314-1-git-send-email-fcvlcdev@free.fr> Message-ID: <9660831e31ba6f2e6b96130e5c459c0a@chewa.net> No objection, if it fixes the bug, it should be merged. I am unable to do VLC work today and tomorrow. However, several developers objected to the complexity of doVolumeChanges (to me, as I merged it). And I admit I do not fully grasp it myself anymore either. I am not sure that merging everything in one function with plenty of parameters was such a great idea. Oh well, too late for 1.1 anyway. On Wed, 9 Jun 2010 01:13:56 +0200, Francois Cartegnie wrote: > --- > src/audio_output/intf.c | 11 +++++++++++ > 1 files changed, 11 insertions(+), 0 deletions(-) > > diff --git a/src/audio_output/intf.c b/src/audio_output/intf.c > index f7c0f48..493ad5c 100644 > --- a/src/audio_output/intf.c > +++ b/src/audio_output/intf.c > @@ -122,6 +122,17 @@ int doVolumeChanges( unsigned action, vlc_object_t * > p_object, int i_nb_steps, > ( action == TOGGLE_MUTE ) > )); > > + /* If muting or unmuting when play hasn't started */ > + if ( action == SET_MUTE && !b_unmute_condition && !b_mute_condition ) > + { > + if ( p_aout ) > + { > + aout_unlock_volume( p_aout ); > + vlc_object_release( p_aout ); > + } > + return i_result; > + } > + > /* On UnMute */ > if ( b_unmute_condition ) > { > -- > 1.6.4.4 > > _______________________________________________ > vlc-devel mailing list > To unsubscribe or modify your subscription options: > http://mailman.videolan.org/listinfo/vlc-devel -- R?mi Denis-Courmont http://www.remlab.net http://fi.linkedin.com/in/remidenis From parveenjain at live.com Wed Jun 9 10:37:40 2010 From: parveenjain at live.com (Parveen Jain) Date: Wed, 9 Jun 2010 14:07:40 +0530 Subject: [vlc-devel] [Videolan-devel] trying to write a sample video streaming application In-Reply-To: <201006051608.14656.remi@remlab.net> References: , <201006051608.14656.remi@remlab.net> Message-ID: Hi, In that case, Is it possible from VLC to generate two independent streams for audio and video without encapsulation.If yes , can you please help me with command ? I explored mail archive of VLC for this, but found that VLC can not do rtp streaming without encapsulation.Is it really the case ? Regards,Parveen Jain > From: remi at remlab.net > To: vlc-devel at videolan.org > Subject: Re: [Videolan-devel] trying to write a sample video streaming application > Date: Sat, 5 Jun 2010 16:08:14 +0300 > CC: parveenjain at live.com > > Le vendredi 4 juin 2010 09:52:02 Parveen Jain, vous avez ?crit : > > Hi All, > > I am writing a SIP application , which will establish a video session(by > > sending SIP INVITE) with peer entity and once it gets confirmation from > > the peer(200 OK of SIP) the application will send out the video stream to > > his designated RTP port. For this I am trying to explore the video > > streaming capabilities of VLC.I know that VLC can do video streaming using > > RTP/UDP very easily(using command line).The same thing I am trying to > > achieve using its External APIs.I had tried to explore the APIs of > > "libVlc-dev" but somehow got confused in its usage for creating such video > > streaming application.My current requirements are just to read from a > > video file and stream it using a very basic video codec(it can be H248). > > There are is no well defined API to stream with LibVLC. You need to set the > "sout" options as you would do with the command line VLC. You should add the > option to the LibVLC media item provided to the LibVLC media player. > > -- > R?mi Denis-Courmont > http://www.remlab.net/ > http://fi.linkedin.com/in/remidenis _________________________________________________________________ The world on four wheels in MSN Autos http://autos.in.msn.com/ -------------- next part -------------- An HTML attachment was scrubbed... URL: From remi at remlab.net Wed Jun 9 12:00:31 2010 From: remi at remlab.net (=?ISO-8859-1?Q?R=E9mi?= Denis-Courmont) Date: Wed, 09 Jun 2010 13:00:31 +0300 Subject: [vlc-devel] [Videolan-devel] trying to write a sample video streaming application In-Reply-To: References: , <201006051608.14656.remi@remlab.net> Message-ID: <1276077631.5062.2.camel@Nokia-N900-51-1> ----- Message d'origine ----- >? ? In that case, Is it possible from VLC to generate two independent streams for > audio and video without encapsulation. Yes. > If yes , can you please help me with > command ? This is detailled in the website streaming howto and probably on the wiki as well. -- R?mi From googuy at gmail.com Wed Jun 9 12:04:15 2010 From: googuy at gmail.com (=?ISO-8859-1?Q?Vicente_Jim=E9nez?=) Date: Wed, 9 Jun 2010 12:04:15 +0200 Subject: [vlc-devel] [Videolan-devel] trying to write a sample video streaming application In-Reply-To: References: <201006051608.14656.remi@remlab.net> Message-ID: The RTP stream out module do that unless you specify a mux parameter. Reference: http://wiki.videolan.org/Documentation:Streaming_HowTo/Advanced_Streaming_Using_the_Command_Line#mux_2 You can also use the es stream output A lot of examples use mux=ts because it is easier to set the receiver player. Cheers. On Wed, Jun 9, 2010 at 10:37 AM, Parveen Jain wrote: > Hi, > ??In that case, Is it possible from VLC to generate two independent streams > for audio and video without encapsulation.If yes , can you please help me > with command ? > ??I explored mail?archive of VLC?for this, but found that VLC can not do rtp > streaming without encapsulation.Is it really the case ? > Regards, > Parveen Jain > >> From: remi at remlab.net >> To: vlc-devel at videolan.org >> Subject: Re: [Videolan-devel] trying to write a sample video streaming >> application >> Date: Sat, 5 Jun 2010 16:08:14 +0300 >> CC: parveenjain at live.com >> >> Le vendredi 4 juin 2010 09:52:02 Parveen Jain, vous avez ?crit : >> > Hi All, >> > I am writing a SIP application , which will establish a video session(by >> > sending SIP INVITE) with peer entity and once it gets confirmation from >> > the peer(200 OK of SIP) the application will send out the video stream >> > to >> > his designated RTP port. For this I am trying to explore the video >> > streaming capabilities of VLC.I know that VLC can do video streaming >> > using >> > RTP/UDP very easily(using command line).The same thing I am trying to >> > achieve using its External APIs.I had tried to explore the APIs of >> > "libVlc-dev" but somehow got confused in its usage for creating such >> > video >> > streaming application.My current requirements are just to read from a >> > video file and stream it using a very basic video codec(it can be H248). >> >> There are is no well defined API to stream with LibVLC. You need to set >> the >> "sout" options as you would do with the command line VLC. You should add >> the >> option to the LibVLC media item provided to the LibVLC media player. >> >> -- >> R?mi Denis-Courmont >> http://www.remlab.net/ >> http://fi.linkedin.com/in/remidenis > > ________________________________ > The dark side of terrorists revealed in MSN Internal Security Get it now. > _______________________________________________ > vlc-devel mailing list > To unsubscribe or modify your subscription options: > http://mailman.videolan.org/listinfo/vlc-devel > > From vincentlecours at theofan.net Wed Jun 9 12:31:25 2010 From: vincentlecours at theofan.net (Vincent Lecours) Date: Wed, 9 Jun 2010 12:31:25 +0200 Subject: [vlc-devel] Not able to build current git on Mac OS X 10.6 In-Reply-To: References: <6abd106f8ec2a13549cabbe5536ab78f@chewa.net> Message-ID: Wow, Thanks a lot for pointing me to the VLC 1.1 branch . Too bad that 1.2 doesn't compile on a Mac. The fact that a Mac is 32 or 64 bit doesn't matter for compiling VLC 1.1. I was able to build 64 bit using the instructions from the wiki with the 1.1 branch. Thanks, Vincent Lecours On 2010-06-07, at 5:32 PM, Rohit Yadav wrote: > Hi, > > Yes, I did. Just few days back. > Is your Mac 64bit? Mine is 32 bit. > > Make sure you are using the VLC 1.1-git maintainance branch. (not vlc.git...) > Grab the latest here: > $git clone git://git.videolan.org/vlc/vlc-1.1.git > > And follow the steps to get Mac 3rd party contribs: (make sure you have subversion and wget) > [From http://wiki.videolan.org/OSXCompile] > $ cd vlc/extras/contrib > $ ./bootstrap > $ make > > And then, > $ cd ../.. > $ ./bootstrap > $ ./configure --enable-debug > $ make > > If your system is 32 bit, before 'make' do: (just in case) > $ ./configure --host=i386-apple-darwin10 CFLAGS="-arch i386" CXXFLAGS="-arch i386" LDFLAGS="-arch i386" OBJCFLAGS="-arch i386" > > In my case I got stuck with libiconv.la linking, but then somehow I fixed it. > Try once again, if that does n't seem to work, you may mail me. > > Rohit Yadav > _______________________________________________ > vlc-devel mailing list > To unsubscribe or modify your subscription options: > http://mailman.videolan.org/listinfo/vlc-devel -------------- next part -------------- An HTML attachment was scrubbed... URL: From mehmetkpln at gmail.com Wed Jun 9 14:34:27 2010 From: mehmetkpln at gmail.com (Mehmet Kaplan) Date: Wed, 9 Jun 2010 15:34:27 +0300 Subject: [vlc-devel] fixing broken avi files to get correct length of video Message-ID: Hi all, I'm developing a video player application using libvlc 1.1.0. I have an avi video file with format MJPG. libvlc_media_player_get_length function returns 1 second for the total length of video. But original length is 19 seconds. When I try to open video file with installed VLC Player (1.0.2) on my computer, program pops up following dialog: ******************************************************************* --------------------------- AVI Index --------------------------- This AVI file is broken. Seeking will not work correctly. Do you want to try to fix it? This might take a long time. ******************************************************************* When I choose to fix the video file, seeking is correct and video length is shown 19 seconds on VLC Player. But when i choose not to fix, length is 1 second such as in my program. What is the problem in this avi video file, how VLC Player fixes this file and how can I do the same thing VLC Player does? Thanks in advance. From ajmas at sympatico.ca Wed Jun 9 14:36:16 2010 From: ajmas at sympatico.ca (Andre-John Mas) Date: Wed, 9 Jun 2010 08:36:16 -0400 Subject: [vlc-devel] Not able to build current git on Mac OS X 10.6 In-Reply-To: References: <6abd106f8ec2a13549cabbe5536ab78f@chewa.net> Message-ID: On 9-Jun-2010, at 06:31, Vincent Lecours wrote: > Wow, Thanks a lot for pointing me to the VLC 1.1 branch . Too bad that 1.2 doesn't compile on a Mac. > > The fact that a Mac is 32 or 64 bit doesn't matter for compiling VLC 1.1. I was able to build 64 bit using the instructions from the wiki with the 1.1 branch. > > Thanks, > > Vincent Lecours The future direction of the Mac version will Lunettes for the UI: http://wiki.videolan.org/Lunettes VLC will still be developed for the Mac, but only in the sense that libvlc and VLCKit will be the available products, since these are used by the Lunettes UI. If you can target your efforts there it would be appreciated. Andr? From fcvlcdev at free.fr Wed Jun 9 15:06:53 2010 From: fcvlcdev at free.fr (Francois Cartegnie) Date: Wed, 9 Jun 2010 15:06:53 +0200 Subject: [vlc-devel] [PATCH] Ignore unmute if volume hasn't been set or muted. fixes #3636 In-Reply-To: <9660831e31ba6f2e6b96130e5c459c0a@chewa.net> References: <1276038836-30314-1-git-send-email-fcvlcdev@free.fr> <9660831e31ba6f2e6b96130e5c459c0a@chewa.net> Message-ID: <201006091506.53959.fcvlcdev@free.fr> Le mercredi 9 juin 2010, R?mi Denis-Courmont a ?crit : > However, several developers objected to the complexity of doVolumeChanges > (to me, as I merged it). And I admit I do not fully grasp it myself anymore > either. I am not sure that merging everything in one function with plenty > of parameters was such a great idea. Oh well, too late for 1.1 anyway. As we needed to introduce a 'mixer' lock level, not centralizing the changes would have resulted in locks spread in too many functions and a big headache. Francois From salsaman at gmail.com Wed Jun 9 15:37:04 2010 From: salsaman at gmail.com (salsaman) Date: Wed, 9 Jun 2010 10:37:04 -0300 Subject: [vlc-devel] Updated patch for ogg/theora seeking In-Reply-To: References: <20100607191537.GB25090@linux-3azp> <20100607201236.GC25090@linux-3azp> <20100607202829.GD25090@linux-3azp> <20100608211103.GF25090@linux-3azp> <20100608221700.GG25090@linux-3azp> <20100609065246.GA32076@linux-3azp> Message-ID: You could also try uncommenting some of the fprintf in oggseek.c and seeing what happens. You should see it homing in on the keyframe before the target frame. Gabriel. http://lives.sourceforge.net https://www.ohloh.net/accounts/salsaman On Wed, Jun 9, 2010 at 10:19 AM, salsaman wrote: > OK, here is the patch updated with FASTSEEK. > > If you are seeing problems even after downloading elephants dream, then I > think there is some other problem. Maybe you are using a different demuxer > (avformat ?) instead of the ogg demuxer ? > > > > Regards, > Gabriel. > > http://lives.sourceforge.net > https://www.ohloh.net/accounts/salsaman > > > > On Wed, Jun 9, 2010 at 3:52 AM, Ilkka Ollakka wrote: > >> On Tue, Jun 08, 2010 at 07:28:27PM -0300, salsaman wrote: >> > Please check back in this thread. I asked how to tell if we are >> dealing >> > with a stream or a file, and I was told to use stream_Control( >> stream_t *, >> > STREAM_CAN_SEEK, &boolean ); >> >> Hi, >> >> You don't really need to know if access has file or stream coming in do >> you? Seems that you just need to know if it can be seeked (fast in this >> case seems like the info you need ) so STREAM_CAN_FASTSEEK would tell you >> if >> seeking is really a fast one (like local files etc) or not (not able to >> seek, or slow seek like in http-case). >> >> I think there could be still seeking problem even with local files. I >> tried that elephantsdream as local file, and it behaved same as behind >> http, so maybe patch is missing some boundary limit, or I just had some >> other problem in that case. I'll try to test more tonight. >> >> -- >> Ilkka Ollakka >> "I've seen, I SAY, I've seen better heads on a mug of beer" >> -- Senator Claghorn >> >> _______________________________________________ >> vlc-devel mailing list >> To unsubscribe or modify your subscription options: >> http://mailman.videolan.org/listinfo/vlc-devel >> >> > -------------- next part -------------- An HTML attachment was scrubbed... URL: From salsaman at gmail.com Tue Jun 8 16:57:54 2010 From: salsaman at gmail.com (salsaman) Date: Tue, 8 Jun 2010 11:57:54 -0300 Subject: [vlc-devel] Updated patch for ogg/theora seeking In-Reply-To: <20100607202829.GD25090@linux-3azp> References: <20100605195428.GY16350@chewa.net> <20100607061402.GA4860@linux-3azp> <20100607191537.GB25090@linux-3azp> <20100607201236.GC25090@linux-3azp> <20100607202829.GD25090@linux-3azp> Message-ID: OK, this iteration of the patch should fix all of the issues previously mentioned. I think there may be a bug elsewhere in vlc, because if the stream is not seekable, attempts to seek now return VLC_EGENERIC. However playback hangs anyway. Regards, Gabriel. http://lives.sourceforge.net https://www.ohloh.net/accounts/salsaman On Mon, Jun 7, 2010 at 5:28 PM, Ilkka Ollakka wrote: > On Mon, Jun 07, 2010 at 05:14:58PM -0300, salsaman wrote: > > OK, how do I check for a stream ? I was assuming that if the file size > was > > 0 then it is a stream, otherwise it is a file. > > Hi, > > You can use stream_Control( stream_t *, STREAM_CAN_SEEK, &bool ) or > STREAM_CAN_FASTSEEK to check if stream is seekable or can be seeked > fast. You don't really need to know if input is file or stream. > > (stream_Tell/stream_Size uses STREAM_GET_POSITION and STREAM_GET_SIZE, > if you look vlc/include/vlc_stream.h ). > > -- > Ilkka Ollakka > Money is the root of all evil, and man needs roots > > _______________________________________________ > vlc-devel mailing list > To unsubscribe or modify your subscription options: > http://mailman.videolan.org/listinfo/vlc-devel > > -------------- next part -------------- An HTML attachment was scrubbed... URL: -------------- next part -------------- A non-text attachment was scrubbed... Name: 0001-ogg-theora-seek-changes-for-GSOC-project.patch Type: text/x-patch Size: 61713 bytes Desc: not available URL: From naresh at tlen.pl Wed Jun 9 13:31:41 2010 From: naresh at tlen.pl (Kamil Klimek) Date: Wed, 9 Jun 2010 13:31:41 +0200 Subject: [vlc-devel] [PATCH] support for stream size in imem module Message-ID: <1055E905-4E94-4945-B2A5-43C1DC73F5C1@tlen.pl> A non-text attachment was scrubbed... Name: 0001-support-for-stream-size-in-imem-module.patch Type: application/octet-stream Size: 2071 bytes Desc: not available URL: From weichetsai at gmail.com Wed Jun 9 07:12:33 2010 From: weichetsai at gmail.com (charles) Date: Wed, 9 Jun 2010 13:12:33 +0800 Subject: [vlc-devel] problem of compile VLC and debug it Message-ID: Dear vlc team: I have three problems, First, What is develope environment (OS, compile,IDE, debugger, three-party library ...etc) of VLC team? Now, my develope env is Ubuntu 10.04 in VMware, GCC 4.4.3, eclipse 3.5.2., GDB 7.1. Second, when I debugging function MultiFramedRTPSource::doGetNextFrame1 in /live/livemedia/MultiFramedRTPSource of live555 source, I can't add berakpoing after vlc running. I only add breakpoint in vlc is stop. If I add breakpoint at doGetNextFrame1 when vlc running, then VLC will terminated. Third, I compile VLC successful when all three-party library get use "apt-get". but I compile VLC when use ffmpeg 0.5.2 source, it is success in compile, but VLC can't play rtsp vedio in running. error message in below *main debug: processing request item rtsp://vitortek.dyndns.org/rtsph264node Playlist skip 0 main debug: resyncing on rtsp://vitortek.dyndns.org/rtsph264 main debug: rtsp://vitortek.dyndns.org/rtsph264 is at 0 main debug: starting new item main debug: creating new input thread main debug: Creating an input for 'rtsp://vitortek.dyndns.org/rtsph264' main debug: thread (input) created at priority 10 (input/input.c:230) main debug: thread started qt4 debug: IM: Setting an input main debug: using timeshift granularity of 50 MBytes main debug: using timeshift path '/tmp' main debug: `rtsp://vitortek.dyndns.org/rtsph264' gives access `rtsp' demux `' path `vitortek.dyndns.org/rtsph264' main debug: creating demux: access='rtsp' demux='' path=' vitortek.dyndns.org/rtsph264' main debug: looking for access_demux module: 1 candidate qt4 debug: Updating the geometry qt4 debug: size: 111 - 358 qt4 debug: sizeHint: 111 - 349 qt4 debug: Updating the geometry qt4 debug: size: 111 - 358 qt4 debug: sizeHint: 111 - 349 live555 debug: DESCRIBE failed with 0: select/connect() failed: Operation now in progress live555 debug: connection timeout live555 error: Failed to connect with rtsp://vitortek.dyndns.org/rtsph264 main warning: no access_demux module matching "rtsp" could be loaded main debug: TIMER module_need() : 10754.880 ms - Total 10754.880 ms / 1 intvls (Avg 10754.880 ms) main debug: creating access 'rtsp' path='vitortek.dyndns.org/rtsph264' main debug: looking for access module: 0 candidates main error: no access module matched "rtsp" main debug: TIMER module_need() : 0.278 ms - Total 0.278 ms / 1 intvls (Avg 0.278 ms) main error: open of `rtsp://vitortek.dyndns.org/rtsph264' failed: no access module matched "rtsp" main debug: thread ended main debug: dead input main debug: changing item without a request (current 0/1) main debug: nothing to play qt4 debug: IM: Deleting the input qt4 debug: Updating the geometry qt4 debug: size: 111 - 358 qt4 debug: sizeHint: 111 - 349 qt4 debug: Updating the geometry qt4 debug: size: 111 - 358 qt4 debug: sizeHint: 111 - 349 main debug: Destroying the input for 'rtsp://vitortek.dyndns.org/rtsph264' main debug: TIMER input launching for 'rtsp://vitortek.dyndns.org/rtsph264' : 10780.746 ms - Total 10780.746 ms / 1 intvls (Avg 10780.746 ms)* charles -------------- next part -------------- An HTML attachment was scrubbed... URL: From naresh at tlen.pl Wed Jun 9 13:39:42 2010 From: naresh at tlen.pl (Kamil Klimek) Date: Wed, 9 Jun 2010 13:39:42 +0200 Subject: [vlc-devel] [PATCH] support for size in immem + fixed typo Message-ID: A non-text attachment was scrubbed... Name: 0001-support-for-stream-size-in-imem-module.patch Type: application/octet-stream Size: 2075 bytes Desc: not available URL: -------------- next part -------------- A non-text attachment was scrubbed... Name: 0002-fixed-typo.patch Type: application/octet-stream Size: 677 bytes Desc: not available URL: From salsaman at gmail.com Wed Jun 9 15:19:27 2010 From: salsaman at gmail.com (salsaman) Date: Wed, 9 Jun 2010 10:19:27 -0300 Subject: [vlc-devel] Updated patch for ogg/theora seeking In-Reply-To: <20100609065246.GA32076@linux-3azp> References: <20100607191537.GB25090@linux-3azp> <20100607201236.GC25090@linux-3azp> <20100607202829.GD25090@linux-3azp> <20100608211103.GF25090@linux-3azp> <20100608221700.GG25090@linux-3azp> <20100609065246.GA32076@linux-3azp> Message-ID: OK, here is the patch updated with FASTSEEK. If you are seeing problems even after downloading elephants dream, then I think there is some other problem. Maybe you are using a different demuxer (avformat ?) instead of the ogg demuxer ? Regards, Gabriel. http://lives.sourceforge.net https://www.ohloh.net/accounts/salsaman On Wed, Jun 9, 2010 at 3:52 AM, Ilkka Ollakka wrote: > On Tue, Jun 08, 2010 at 07:28:27PM -0300, salsaman wrote: > > Please check back in this thread. I asked how to tell if we are > dealing > > with a stream or a file, and I was told to use stream_Control( > stream_t *, > > STREAM_CAN_SEEK, &boolean ); > > Hi, > > You don't really need to know if access has file or stream coming in do > you? Seems that you just need to know if it can be seeked (fast in this > case seems like the info you need ) so STREAM_CAN_FASTSEEK would tell you > if > seeking is really a fast one (like local files etc) or not (not able to > seek, or slow seek like in http-case). > > I think there could be still seeking problem even with local files. I > tried that elephantsdream as local file, and it behaved same as behind > http, so maybe patch is missing some boundary limit, or I just had some > other problem in that case. I'll try to test more tonight. > > -- > Ilkka Ollakka > "I've seen, I SAY, I've seen better heads on a mug of beer" > -- Senator Claghorn > > _______________________________________________ > vlc-devel mailing list > To unsubscribe or modify your subscription options: > http://mailman.videolan.org/listinfo/vlc-devel > > -------------- next part -------------- An HTML attachment was scrubbed... URL: -------------- next part -------------- A non-text attachment was scrubbed... Name: 0001-ogg-theora-seek-changes-for-GSOC-project.patch Type: text/x-patch Size: 61747 bytes Desc: not available URL: From salsaman at gmail.com Wed Jun 9 19:35:45 2010 From: salsaman at gmail.com (salsaman) Date: Wed, 9 Jun 2010 14:35:45 -0300 Subject: [vlc-devel] Updated patch for ogg/theora seeking In-Reply-To: References: <20100607191537.GB25090@linux-3azp> <20100607201236.GC25090@linux-3azp> <20100607202829.GD25090@linux-3azp> <20100608211103.GF25090@linux-3azp> <20100608221700.GG25090@linux-3azp> <20100609065246.GA32076@linux-3azp> Message-ID: As a result of my work, I would like to propose a new flag for the stream: STREAM_CAN_EXACTSEEK - the proposed meaning of this flag is that within the stream one can seek exactly to any given frame without artifacts in the frame. This flag must be settable by the demuxer plugin, and is not fixed - for example you could have a container with two video streams one after the other, the first could set this flag and the second (using a different codec) could be not seekable. Rationale: I understand that you are creating libvlc with the intention of this being used for video editing applications. I know from my own experience with LiVES that such applications require demuxers which can deliver the exact frame requested, so generally one would need to look at STREAM_CAN_EXACTSEEK | STREAM_CAN_FASTSEEK to see if the stream is immediately usable or requires further processing (caching, indexing, etc). Regards, Gabriel. http://lives.sourceforge.net https://www.ohloh.net/accounts/salsaman On Wed, Jun 9, 2010 at 10:37 AM, salsaman wrote: > You could also try uncommenting some of the fprintf in oggseek.c and seeing > what happens. > > You should see it homing in on the keyframe before the target frame. > > > Gabriel. > > > http://lives.sourceforge.net > https://www.ohloh.net/accounts/salsaman > > > > On Wed, Jun 9, 2010 at 10:19 AM, salsaman wrote: > >> OK, here is the patch updated with FASTSEEK. >> >> If you are seeing problems even after downloading elephants dream, then I >> think there is some other problem. Maybe you are using a different demuxer >> (avformat ?) instead of the ogg demuxer ? >> >> >> >> Regards, >> Gabriel. >> >> http://lives.sourceforge.net >> https://www.ohloh.net/accounts/salsaman >> >> >> >> On Wed, Jun 9, 2010 at 3:52 AM, Ilkka Ollakka wrote: >> >>> On Tue, Jun 08, 2010 at 07:28:27PM -0300, salsaman wrote: >>> > Please check back in this thread. I asked how to tell if we are >>> dealing >>> > with a stream or a file, and I was told to use stream_Control( >>> stream_t *, >>> > STREAM_CAN_SEEK, &boolean ); >>> >>> Hi, >>> >>> You don't really need to know if access has file or stream coming in do >>> you? Seems that you just need to know if it can be seeked (fast in this >>> case seems like the info you need ) so STREAM_CAN_FASTSEEK would tell you >>> if >>> seeking is really a fast one (like local files etc) or not (not able to >>> seek, or slow seek like in http-case). >>> >>> I think there could be still seeking problem even with local files. I >>> tried that elephantsdream as local file, and it behaved same as behind >>> http, so maybe patch is missing some boundary limit, or I just had some >>> other problem in that case. I'll try to test more tonight. >>> >>> -- >>> Ilkka Ollakka >>> "I've seen, I SAY, I've seen better heads on a mug of beer" >>> -- Senator Claghorn >>> >>> _______________________________________________ >>> vlc-devel mailing list >>> To unsubscribe or modify your subscription options: >>> http://mailman.videolan.org/listinfo/vlc-devel >>> >>> >> > -------------- next part -------------- An HTML attachment was scrubbed... URL: From kaarlo.raiha at gmail.com Wed Jun 9 19:38:35 2010 From: kaarlo.raiha at gmail.com (=?ISO-8859-1?B?S2FhcmxvIFLkaWjk?=) Date: Wed, 9 Jun 2010 20:38:35 +0300 Subject: [vlc-devel] fixing broken avi files to get correct length of video In-Reply-To: References: Message-ID: The AVI file has prolly a broken index info. http://wiki.videolan.org/WindowsFAQ-1.0.x#Can_I_fix_those_broken_AVI_files_permanently.3F 2010/6/9 Mehmet Kaplan > Hi all, > I'm developing a video player application using libvlc 1.1.0. > I have an avi video file with format MJPG. > libvlc_media_player_get_length function returns 1 second for the total > length of video. But original length is 19 seconds. > When I try to open video file with installed VLC Player (1.0.2) on my > computer, program pops up following dialog: > > ******************************************************************* > --------------------------- > AVI Index > --------------------------- > This AVI file is broken. Seeking will not work correctly. > Do you want to try to fix it? > > This might take a long time. > ******************************************************************* > > When I choose to fix the video file, seeking is correct and video > length is shown 19 seconds on VLC Player. > But when i choose not to fix, length is 1 second such as in my program. > What is the problem in this avi video file, how VLC Player fixes this > file and how can I do the same thing VLC Player does? > > Thanks in advance. > _______________________________________________ > vlc-devel mailing list > To unsubscribe or modify your subscription options: > http://mailman.videolan.org/listinfo/vlc-devel > -------------- next part -------------- An HTML attachment was scrubbed... URL: From jakob.leben at gmail.com Wed Jun 9 21:09:52 2010 From: jakob.leben at gmail.com (Jakob Leben) Date: Wed, 9 Jun 2010 21:09:52 +0200 Subject: [vlc-devel] Services Discovery interface upgrade In-Reply-To: References: Message-ID: On Tue, Jun 8, 2010 at 6:05 PM, Jakob Leben wrote: > Since we would have SD item trees composed of sd_node_t, we'd no longer > need to use SD through playlist. Instead, playlist would not be a client of > SD anymore, but all the former clients of playlist's SD support should > become immediate clients of SD. > Well, now I think that it would be best to keep the playlist-SD bridge (thus having a copy of sd_node_t hierarchy in the playlist), instead of the big amount of work needed for clients of SD in case of removing the bridge. This would also allow modules using old and new API to coexist since playlist-SD bridge would abstract the difference away. Please, any comments on this whole endeavor? Cheers, Jakob -------------- next part -------------- An HTML attachment was scrubbed... URL: From xtophe at chewa.net Thu Jun 10 00:53:07 2010 From: xtophe at chewa.net (Christophe Mutricy) Date: Thu, 10 Jun 2010 00:53:07 +0200 Subject: [vlc-devel] [PATCH] support for size in immem + fixed typo In-Reply-To: References: Message-ID: <20100609225306.GR30509@chewa.net> Some nit-picking comments > + add_string ("imem-size", "0", NULL, SIZE_TEXT, SIZE_LONGTEXT, true) > + change_private() > + change_safe() > + Why is change_safe more indented than change_private . > /***************************************************************************** > - * Local prototypes > + * Local prototypes > *****************************************************************************/ > White char changes should go in another commits > /* */ > @@ -307,7 +315,7 @@ static int OpenAccess(vlc_object_t *object) > CloseCommon(sys); > return VLC_EGENERIC; > } > - > + idem > From c90690d2618ccd20736f4de60504d10898622c5f Mon Sep 17 00:00:00 2001 > From: Kamil Klimek > Date: Wed, 9 Jun 2010 13:37:51 +0200 > Subject: [PATCH 2/2] fixed typo Should be squashed (git rebase -i origin/master) -- Xtophe From salsaman at gmail.com Thu Jun 10 01:04:55 2010 From: salsaman at gmail.com (salsaman) Date: Wed, 9 Jun 2010 20:04:55 -0300 Subject: [vlc-devel] Updated patch for ogg/theora seeking In-Reply-To: References: <20100607191537.GB25090@linux-3azp> <20100607201236.GC25090@linux-3azp> <20100607202829.GD25090@linux-3azp> <20100608211103.GF25090@linux-3azp> <20100608221700.GG25090@linux-3azp> <20100609065246.GA32076@linux-3azp> Message-ID: While I am waiting for a reply, I just thought I would explain the search algorithm used, so you verify it is very efficient. We create an index on the fly, this index is basically: offset in file -> maximum frame number When asked to seek to a particular frame, we first check the index to see if we have approximate boundaries for the seek, otherwise we will seek in the whole file, from data_start until the end. The area to be searched is divided into two halves. We first check the upper half, and get the highest and lowest granulepos. (The granulepos is basically keyframe * keyframe_offset + frame offset). If our target frame lies in this region we subdivide it into two halves, otherwise we check the lower half from earlier. We stop when we have found the keyframe for our target frame, or the search region is < minimum_page_size. What we are aiming to find on this first pass, is the highest keyframe (sync point) which is <= target frame. Once we have found this, we need to rewind a bit further, because the ogg container only discloses where a frame ends, not where it begins. So we do a second pass and find the highest granulepos < target granulepos from the last step. We begin decoding from here, ignoring any frames which are output on this first page. We then start counting down until we reach the target frame. As we discover keyframes (sync points) these are added to the index. Also, if we discover a higher frame number which is based on the same keyframe we update our index. Additionally, during normal playback the index is updated with keyframes as we play them. If the codec/demuxer is installed and working properly you can see this in operation - the first seek takes a noticable fraction of a second, subsequent seeks become increasingly faster as the keyframe -> highest frame index is built up. I believe this is the most efficient way of seeking in ogg (at least for theora - and probably for dirac; although dirac seems a little different in that there is a lower bound but no upper bound for dirac, and according to the dirac spec the granulepos shows the first frame decoded on a page rather than the last frame). There is currently one known issue, which is if the entire file is < min_page_size, we never find any keyframes. I am working on a fix for this, I believe the solution in this case is simply to divide the min_page_size by 2 until we get a keyframe produced. Regards, Gabriel. http://lives.sourceforge.net https://www.ohloh.net/accounts/salsaman On Wed, Jun 9, 2010 at 2:35 PM, salsaman wrote: > As a result of my work, I would like to propose a new flag for the stream: > > STREAM_CAN_EXACTSEEK > > - the proposed meaning of this flag is that within the stream one can seek > exactly to any given frame without artifacts in the frame. This flag must be > settable by the demuxer plugin, and is not fixed - for example you could > have a container with two video streams one after the other, the first could > set this flag and the second (using a different codec) could be not > seekable. > > Rationale: > I understand that you are creating libvlc with the intention of this being > used for video editing applications. I know from my own experience with > LiVES that such applications require demuxers which can deliver the exact > frame requested, so generally one would need to look at STREAM_CAN_EXACTSEEK > | STREAM_CAN_FASTSEEK to see if the stream is immediately usable or requires > further processing (caching, indexing, etc). > > > > > Regards, > Gabriel. > > > > > > http://lives.sourceforge.net > https://www.ohloh.net/accounts/salsaman > > > > On Wed, Jun 9, 2010 at 10:37 AM, salsaman wrote: > >> You could also try uncommenting some of the fprintf in oggseek.c and >> seeing what happens. >> >> You should see it homing in on the keyframe before the target frame. >> >> >> Gabriel. >> >> >> http://lives.sourceforge.net >> https://www.ohloh.net/accounts/salsaman >> >> >> >> On Wed, Jun 9, 2010 at 10:19 AM, salsaman wrote: >> >>> OK, here is the patch updated with FASTSEEK. >>> >>> If you are seeing problems even after downloading elephants dream, then I >>> think there is some other problem. Maybe you are using a different demuxer >>> (avformat ?) instead of the ogg demuxer ? >>> >>> >>> >>> Regards, >>> Gabriel. >>> >>> http://lives.sourceforge.net >>> https://www.ohloh.net/accounts/salsaman >>> >>> >>> >>> On Wed, Jun 9, 2010 at 3:52 AM, Ilkka Ollakka wrote: >>> >>>> On Tue, Jun 08, 2010 at 07:28:27PM -0300, salsaman wrote: >>>> > Please check back in this thread. I asked how to tell if we are >>>> dealing >>>> > with a stream or a file, and I was told to use stream_Control( >>>> stream_t *, >>>> > STREAM_CAN_SEEK, &boolean ); >>>> >>>> Hi, >>>> >>>> You don't really need to know if access has file or stream coming in do >>>> you? Seems that you just need to know if it can be seeked (fast in this >>>> case seems like the info you need ) so STREAM_CAN_FASTSEEK would tell >>>> you if >>>> seeking is really a fast one (like local files etc) or not (not able to >>>> seek, or slow seek like in http-case). >>>> >>>> I think there could be still seeking problem even with local files. I >>>> tried that elephantsdream as local file, and it behaved same as behind >>>> http, so maybe patch is missing some boundary limit, or I just had some >>>> other problem in that case. I'll try to test more tonight. >>>> >>>> -- >>>> Ilkka Ollakka >>>> "I've seen, I SAY, I've seen better heads on a mug of beer" >>>> -- Senator Claghorn >>>> >>>> _______________________________________________ >>>> vlc-devel mailing list >>>> To unsubscribe or modify your subscription options: >>>> http://mailman.videolan.org/listinfo/vlc-devel >>>> >>>> >>> >> > -------------- next part -------------- An HTML attachment was scrubbed... URL: From mehmetkpln at gmail.com Thu Jun 10 07:47:14 2010 From: mehmetkpln at gmail.com (Mehmet Kaplan) Date: Thu, 10 Jun 2010 08:47:14 +0300 Subject: [vlc-devel] fixing broken avi files to get correct length of video In-Reply-To: References: Message-ID: Thanks, but in that link, there is only the information that I can fix those files with VLC Player. Also I wonder how i can detect broken avi files and fix those files in my application using libvlc? On Wed, Jun 9, 2010 at 8:38 PM, Kaarlo R?ih? wrote: > The AVI file has prolly a broken index info. > http://wiki.videolan.org/WindowsFAQ-1.0.x#Can_I_fix_those_broken_AVI_files_permanently.3F > > 2010/6/9 Mehmet Kaplan >> >> Hi all, >> I'm developing a video player application using libvlc 1.1.0. >> I have an avi video file with format MJPG. >> libvlc_media_player_get_length function returns 1 second for the total >> length of video. But original length is 19 seconds. >> When I try to open video file with installed VLC Player (1.0.2) on my >> computer, program pops up following dialog: >> >> ******************************************************************* >> --------------------------- >> AVI Index >> --------------------------- >> This AVI file is broken. Seeking will not work correctly. >> Do you want to try to fix it? >> >> This might take a long time. >> ******************************************************************* >> >> When I choose to fix the video file, seeking is correct and video >> length is shown 19 seconds on VLC Player. >> But when i choose not to fix, length is 1 second such as in my program. >> What is the problem in this avi video file, how VLC Player fixes this >> file and how can I do the same thing VLC Player does? >> >> Thanks in advance. >> _______________________________________________ >> vlc-devel mailing list >> To unsubscribe or modify your subscription options: >> http://mailman.videolan.org/listinfo/vlc-devel > > > _______________________________________________ > vlc-devel mailing list > To unsubscribe or modify your subscription options: > http://mailman.videolan.org/listinfo/vlc-devel > > From kaarlo.raiha at gmail.com Thu Jun 10 10:13:26 2010 From: kaarlo.raiha at gmail.com (=?ISO-8859-1?B?S2FhcmxvIFLkaWjk?=) Date: Thu, 10 Jun 2010 11:13:26 +0300 Subject: [vlc-devel] fixing broken avi files to get correct length of video In-Reply-To: References: Message-ID: AFAIK only way to permanently fix files with (lib)VLC is to remux them, but since VLC's AVI muxer is somewhat broken I would suggest other tools. Anyway it would be something like vlc input.avi --sout=#std{access=file,mux=avi,dst=output.avi} or vlc input.avi --sout=#std{access=file,mux=ffmpeg{mux=avi},dst=output.avi} (I am not sure if the ffmpeg version works) 2010/6/10 Mehmet Kaplan > Thanks, but in that link, there is only the information that I can fix > those files with VLC Player. > Also I wonder how i can detect broken avi files and fix those files in > my application using libvlc? > > > On Wed, Jun 9, 2010 at 8:38 PM, Kaarlo R?ih? > wrote: > > The AVI file has prolly a broken index info. > > > http://wiki.videolan.org/WindowsFAQ-1.0.x#Can_I_fix_those_broken_AVI_files_permanently.3F > > > > 2010/6/9 Mehmet Kaplan > >> > >> Hi all, > >> I'm developing a video player application using libvlc 1.1.0. > >> I have an avi video file with format MJPG. > >> libvlc_media_player_get_length function returns 1 second for the total > >> length of video. But original length is 19 seconds. > >> When I try to open video file with installed VLC Player (1.0.2) on my > >> computer, program pops up following dialog: > >> > >> ******************************************************************* > >> --------------------------- > >> AVI Index > >> --------------------------- > >> This AVI file is broken. Seeking will not work correctly. > >> Do you want to try to fix it? > >> > >> This might take a long time. > >> ******************************************************************* > >> > >> When I choose to fix the video file, seeking is correct and video > >> length is shown 19 seconds on VLC Player. > >> But when i choose not to fix, length is 1 second such as in my program. > >> What is the problem in this avi video file, how VLC Player fixes this > >> file and how can I do the same thing VLC Player does? > >> > >> Thanks in advance. > >> _______________________________________________ > >> vlc-devel mailing list > >> To unsubscribe or modify your subscription options: > >> http://mailman.videolan.org/listinfo/vlc-devel > > > > > > _______________________________________________ > > vlc-devel mailing list > > To unsubscribe or modify your subscription options: > > http://mailman.videolan.org/listinfo/vlc-devel > > > > > _______________________________________________ > vlc-devel mailing list > To unsubscribe or modify your subscription options: > http://mailman.videolan.org/listinfo/vlc-devel > -------------- next part -------------- An HTML attachment was scrubbed... URL: From mehmetkpln at gmail.com Thu Jun 10 10:59:10 2010 From: mehmetkpln at gmail.com (Mehmet Kaplan) Date: Thu, 10 Jun 2010 11:59:10 +0300 Subject: [vlc-devel] fixing broken avi files to get correct length of video In-Reply-To: References: Message-ID: vlc input.avi --sout=#std{access=file,mux=avi,dst=output.avi} fixes the file. Last problem is how I decide avi file is broken or not? How can I find indexing is problematic? On Thu, Jun 10, 2010 at 11:13 AM, Kaarlo R?ih? wrote: > AFAIK only way to permanently fix files with (lib)VLC is to remux them, but > since VLC's AVI muxer is somewhat broken I would suggest other tools. > Anyway it would be something like > vlc input.avi --sout=#std{access=file,mux=avi,dst=output.avi} > or > vlc input.avi --sout=#std{access=file,mux=ffmpeg{mux=avi},dst=output.avi} > (I am not sure if the ffmpeg version works) > > 2010/6/10 Mehmet Kaplan >> >> Thanks, but in that link, there is only the information that I can fix >> those files with VLC Player. >> Also I wonder how i can detect broken avi files and fix those files in >> my application using libvlc? >> >> >> On Wed, Jun 9, 2010 at 8:38 PM, Kaarlo R?ih? >> wrote: >> > The AVI file has prolly a broken index info. >> > >> > http://wiki.videolan.org/WindowsFAQ-1.0.x#Can_I_fix_those_broken_AVI_files_permanently.3F >> > >> > 2010/6/9 Mehmet Kaplan >> >> >> >> Hi all, >> >> I'm developing a video player application using libvlc 1.1.0. >> >> I have an avi video file with format MJPG. >> >> libvlc_media_player_get_length function returns 1 second for the total >> >> length of video. But original length is 19 seconds. >> >> When I try to open video file with installed VLC Player (1.0.2) on my >> >> computer, program pops up following dialog: >> >> >> >> ******************************************************************* >> >> --------------------------- >> >> AVI Index >> >> --------------------------- >> >> This AVI file is broken. Seeking will not work correctly. >> >> Do you want to try to fix it? >> >> >> >> This might take a long time. >> >> ******************************************************************* >> >> >> >> When I choose to fix the video file, seeking is correct and video >> >> length is shown 19 seconds on VLC Player. >> >> But when i choose not to fix, length is 1 second such as in my program. >> >> What is the problem in this avi video file, how VLC Player fixes this >> >> file and how can I do the same thing VLC Player does? >> >> >> >> Thanks in advance. >> >> _______________________________________________ >> >> vlc-devel mailing list >> >> To unsubscribe or modify your subscription options: >> >> http://mailman.videolan.org/listinfo/vlc-devel >> > >> > >> > _______________________________________________ >> > vlc-devel mailing list >> > To unsubscribe or modify your subscription options: >> > http://mailman.videolan.org/listinfo/vlc-devel >> > >> > >> _______________________________________________ >> vlc-devel mailing list >> To unsubscribe or modify your subscription options: >> http://mailman.videolan.org/listinfo/vlc-devel > > > _______________________________________________ > vlc-devel mailing list > To unsubscribe or modify your subscription options: > http://mailman.videolan.org/listinfo/vlc-devel > > From ogg.k.ogg.k at googlemail.com Thu Jun 10 11:39:46 2010 From: ogg.k.ogg.k at googlemail.com (ogg.k.ogg.k at googlemail.com) Date: Thu, 10 Jun 2010 09:39:46 +0000 Subject: [vlc-devel] Updated patch for ogg/theora seeking In-Reply-To: References: <20100607191537.GB25090@linux-3azp> <20100607201236.GC25090@linux-3azp> <20100607202829.GD25090@linux-3azp> <20100608211103.GF25090@linux-3azp> <20100608221700.GG25090@linux-3azp> <20100609065246.GA32076@linux-3azp> Message-ID: Hi, > We create an index on the fly, this index is basically: seeing this work being done, I thought I'd mention that there is an index being worked on for Ogg streams, which can be present or not. It would probably be a good idea to have a look at it, so that the patch discussed here can later make use of such an index, if one is found in the file, to seed that cache. See the spec (it's stored in the Skeleton track): http://wiki.xiph.org/Ogg_Skeleton_4 A tool for creating these indices, and validating them: http://github.com/cpearce/OggIndex From salsaman at gmail.com Thu Jun 10 12:07:51 2010 From: salsaman at gmail.com (salsaman) Date: Thu, 10 Jun 2010 07:07:51 -0300 Subject: [vlc-devel] Updated patch for ogg/theora seeking In-Reply-To: References: <20100607191537.GB25090@linux-3azp> <20100607201236.GC25090@linux-3azp> <20100607202829.GD25090@linux-3azp> <20100608211103.GF25090@linux-3azp> <20100608221700.GG25090@linux-3azp> <20100609065246.GA32076@linux-3azp> Message-ID: Yes, adding skeleton support is one possibility for the second part of my GSOC project (in July). Regards, Gabriel. http://lives.sourceforge.net https://www.ohloh.net/accounts/salsaman On Thu, Jun 10, 2010 at 6:39 AM, ogg.k.ogg.k at googlemail.com < ogg.k.ogg.k at googlemail.com> wrote: > Hi, > > > We create an index on the fly, this index is basically: > > seeing this work being done, I thought I'd mention that there is an > index being worked on for Ogg streams, which can be present or not. It > would probably be a good idea to have a look at it, so that the patch > discussed here can later make use of such an index, if one is found in > the file, to seed that cache. > > See the spec (it's stored in the Skeleton track): > http://wiki.xiph.org/Ogg_Skeleton_4 > > A tool for creating these indices, and validating them: > http://github.com/cpearce/OggIndex > _______________________________________________ > vlc-devel mailing list > To unsubscribe or modify your subscription options: > http://mailman.videolan.org/listinfo/vlc-devel > -------------- next part -------------- An HTML attachment was scrubbed... URL: From kaarlo.raiha at gmail.com Thu Jun 10 15:37:40 2010 From: kaarlo.raiha at gmail.com (=?ISO-8859-1?B?S2FhcmxvIFLkaWjk?=) Date: Thu, 10 Jun 2010 16:37:40 +0300 Subject: [vlc-devel] fixing broken avi files to get correct length of video In-Reply-To: References: Message-ID: AFAIK libvlc doesn't have API function to find out about broken/missing AVI index. Log might complain something that you could try to catch. 2010/6/10 Mehmet Kaplan > vlc input.avi --sout=#std{access=file,mux=avi,dst=output.avi} fixes the > file. > Last problem is how I decide avi file is broken or not? > How can I find indexing is problematic? > > On Thu, Jun 10, 2010 at 11:13 AM, Kaarlo R?ih? > wrote: > > AFAIK only way to permanently fix files with (lib)VLC is to remux them, > but > > since VLC's AVI muxer is somewhat broken I would suggest other tools. > > Anyway it would be something like > > vlc input.avi --sout=#std{access=file,mux=avi,dst=output.avi} > > or > > vlc input.avi --sout=#std{access=file,mux=ffmpeg{mux=avi},dst=output.avi} > > (I am not sure if the ffmpeg version works) > > > > 2010/6/10 Mehmet Kaplan > >> > >> Thanks, but in that link, there is only the information that I can fix > >> those files with VLC Player. > >> Also I wonder how i can detect broken avi files and fix those files in > >> my application using libvlc? > >> > >> > >> On Wed, Jun 9, 2010 at 8:38 PM, Kaarlo R?ih? > >> wrote: > >> > The AVI file has prolly a broken index info. > >> > > >> > > http://wiki.videolan.org/WindowsFAQ-1.0.x#Can_I_fix_those_broken_AVI_files_permanently.3F > >> > > >> > 2010/6/9 Mehmet Kaplan > >> >> > >> >> Hi all, > >> >> I'm developing a video player application using libvlc 1.1.0. > >> >> I have an avi video file with format MJPG. > >> >> libvlc_media_player_get_length function returns 1 second for the > total > >> >> length of video. But original length is 19 seconds. > >> >> When I try to open video file with installed VLC Player (1.0.2) on my > >> >> computer, program pops up following dialog: > >> >> > >> >> ******************************************************************* > >> >> --------------------------- > >> >> AVI Index > >> >> --------------------------- > >> >> This AVI file is broken. Seeking will not work correctly. > >> >> Do you want to try to fix it? > >> >> > >> >> This might take a long time. > >> >> ******************************************************************* > >> >> > >> >> When I choose to fix the video file, seeking is correct and video > >> >> length is shown 19 seconds on VLC Player. > >> >> But when i choose not to fix, length is 1 second such as in my > program. > >> >> What is the problem in this avi video file, how VLC Player fixes this > >> >> file and how can I do the same thing VLC Player does? > >> >> > >> >> Thanks in advance. > >> >> _______________________________________________ > >> >> vlc-devel mailing list > >> >> To unsubscribe or modify your subscription options: > >> >> http://mailman.videolan.org/listinfo/vlc-devel > >> > > >> > > >> > _______________________________________________ > >> > vlc-devel mailing list > >> > To unsubscribe or modify your subscription options: > >> > http://mailman.videolan.org/listinfo/vlc-devel > >> > > >> > > >> _______________________________________________ > >> vlc-devel mailing list > >> To unsubscribe or modify your subscription options: > >> http://mailman.videolan.org/listinfo/vlc-devel > > > > > > _______________________________________________ > > vlc-devel mailing list > > To unsubscribe or modify your subscription options: > > http://mailman.videolan.org/listinfo/vlc-devel > > > > > _______________________________________________ > vlc-devel mailing list > To unsubscribe or modify your subscription options: > http://mailman.videolan.org/listinfo/vlc-devel > -------------- next part -------------- An HTML attachment was scrubbed... URL: From bjorn at haxx.se Thu Jun 10 15:41:58 2010 From: bjorn at haxx.se (=?iso-8859-1?Q?Bj=F6rn?= Stenberg) Date: Thu, 10 Jun 2010 15:41:58 +0200 Subject: [vlc-devel] [PATCH] dvbsub.c : Don't fill region if page_state == 0 In-Reply-To: <20100609070230.GB32076@linux-3azp> References: <20100608183713.GC8419@giant> <20100609070230.GB32076@linux-3azp> Message-ID: <20100610134158.GA31958@giant> Ilkka Ollakka wrote: > Would it be possible you to provide some test clip on that? Here is a clip with progressive subtitles in the swedish ("Svenska") DVB subtitle track: http://bjorn.haxx.se/vlc/fill_problem.ts I have also procuced a workaround to show how it is meant to look: http://bjorn.haxx.se/vlc/fill_workaround.ts The workaround is done by clearing the region_fill_flag in the update packets, and only set it in the "new page" packets. I don't think it is a proper solution though, since it comes with its' own spec interpretation issues and may break on other decoders. > Please provide patch that applies and is against git-tree I will submit a new patch shortly. -- Bj?rn From naresh at tlen.pl Thu Jun 10 08:59:02 2010 From: naresh at tlen.pl (Kamil Klimek) Date: Thu, 10 Jun 2010 08:59:02 +0200 Subject: [vlc-devel] [PATCH] support for stream size in imem access module Message-ID: <6523D425-55DE-4911-85E5-0C36CF44A617@tlen.pl> A non-text attachment was scrubbed... Name: 0001-support-for-stream-size-in-imem-access-module.patch Type: application/octet-stream Size: 1894 bytes Desc: not available URL: From jakob.leben at gmail.com Thu Jun 10 18:54:55 2010 From: jakob.leben at gmail.com (Jakob Leben) Date: Thu, 10 Jun 2010 18:54:55 +0200 Subject: [vlc-devel] Services Discovery interface upgrade In-Reply-To: References: Message-ID: On Wed, Jun 9, 2010 at 9:09 PM, Jakob Leben wrote: > On Tue, Jun 8, 2010 at 6:05 PM, Jakob Leben wrote: > >> Since we would have SD item trees composed of sd_node_t, we'd no longer >> need to use SD through playlist. Instead, playlist would not be a client of >> SD anymore, but all the former clients of playlist's SD support should >> become immediate clients of SD. >> > > Well, now I think that it would be best to keep the playlist-SD bridge > (thus having a copy of sd_node_t hierarchy in the playlist), instead of the > big amount of work needed for clients of SD in case of removing the bridge. > An even better approach without item hierarchy duplication is probably to separate playlist_item_t interface from playlist_t interface, extend playlist_item_t with reference counting and SD-related fields and use it for SD as well. Thus a SD module would control directly a tree of playlist_item_t, which would at the same time be a child of playlist's root node. And I think we would profit a lot by having proper garbage collection for playlist items anyway! -------------- next part -------------- An HTML attachment was scrubbed... URL: From remi at remlab.net Thu Jun 10 21:14:03 2010 From: remi at remlab.net (=?UTF-8?Q?R=C3=A9mi_Denis-Courmont?=) Date: Thu, 10 Jun 2010 21:14:03 +0200 Subject: [vlc-devel] =?utf-8?q?=5Bvlc-commits=5D_commit=3A_plugins=3A_allo?= =?utf-8?q?w_to_set_more_than_one_shortcut_in_on_shot=2E_=28_R=C3=A9mi_Dur?= =?utf-8?q?affort_=29?= In-Reply-To: <20100610185158.8D029F22C8@albiero.videolan.org> References: <20100610185158.8D029F22C8@albiero.videolan.org> Message-ID: <7e4ca09606d9b608fba72acf6689c3c7@chewa.net> On Thu, 10 Jun 2010 20:51:58 +0200 (CEST), git at videolan.org wrote > vlc | branch: master | R?mi Duraffort | Thu Jun 10 > 20:19:05 2010 +0200| [ed246608e80f193bf20bbc4bb892c8a19415cfb6] | > committer: R?mi Duraffort > > plugins: allow to set more than one shortcut in on shot. > > This is faster as we can now alloc the right size for the shortcuts array. This is crap. Now old plugins will trigger a crash with the new core and vice-versa. -- R?mi Denis-Courmont http://www.remlab.net http://fi.linkedin.com/in/remidenis From ivoire at videolan.org Thu Jun 10 21:46:16 2010 From: ivoire at videolan.org (=?iso-8859-1?Q?R=E9mi?= Duraffort) Date: Thu, 10 Jun 2010 21:46:16 +0200 Subject: [vlc-devel] =?iso-8859-1?q?=5Bvlc-commits=5D_commit=3A_plugins=3A?= =?iso-8859-1?q?_allow_to_set_more_than_one_shortcut_in_on_shot=2E_?= =?iso-8859-1?q?=28_R=E9mi_Duraffort_=29?= In-Reply-To: <7e4ca09606d9b608fba72acf6689c3c7@chewa.net> References: <20100610185158.8D029F22C8@albiero.videolan.org> <7e4ca09606d9b608fba72acf6689c3c7@chewa.net> Message-ID: <20100610194615.GA31809@dinauz.org> Le jeudi 10 juin 2010 ? 09:14:03, R?mi Denis-Courmont a ?crit : > > On Thu, 10 Jun 2010 20:51:58 +0200 (CEST), git at videolan.org wrote > > vlc | branch: master | R?mi Duraffort | Thu Jun 10 > > 20:19:05 2010 +0200| [ed246608e80f193bf20bbc4bb892c8a19415cfb6] | > > committer: R?mi Duraffort > > > > plugins: allow to set more than one shortcut in on shot. > > > > This is faster as we can now alloc the right size for the shortcuts > array. > > This is crap. Now old plugins will trigger a crash with the new core and > vice-versa. Another solution is to create a new macro (add_shortcuts for example) Anyway the ABI is broken so normally the modules won't be loaded without being rebuild ? -- R?mi Duraffort | ivoire From jb at videolan.org Thu Jun 10 22:51:22 2010 From: jb at videolan.org (Jean-Baptiste Kempf) Date: Thu, 10 Jun 2010 22:51:22 +0200 Subject: [vlc-devel] [vlc-commits] commit: core: fix a wrong division (Erwan Tulou ) In-Reply-To: <20100610164119.1F20EF1730@albiero.videolan.org> References: <20100610164119.1F20EF1730@albiero.videolan.org> Message-ID: <20100610205122.GA5535@videolan.org> On Thu, Jun 10, 2010 at 06:41:19PM +0200, git at videolan.org wrote : > core: fix a wrong division Backport wanted? Best Regards, -- Jean-Baptiste Kempf http://www.jbkempf.com/ From jb at videolan.org Thu Jun 10 22:51:31 2010 From: jb at videolan.org (Jean-Baptiste Kempf) Date: Thu, 10 Jun 2010 22:51:31 +0200 Subject: [vlc-devel] [vlc-commits] commit: msw: let zooming to exceed the display size (Erwan Tulou ) In-Reply-To: <20100610164119.B911EF1922@albiero.videolan.org> References: <20100610164119.B911EF1922@albiero.videolan.org> Message-ID: <20100610205131.GB5535@videolan.org> On Thu, Jun 10, 2010 at 06:41:19PM +0200, git at videolan.org wrote : > vlc | branch: master | Erwan Tulou | Thu Jun 10 18:19:48 2010 +0200| [c8b51e05d71834aefd11c5d89bf193132bd1305d] | committer: Erwan Tulou > > msw: let zooming to exceed the display size Backport wanted? - Best Regards, -- Jean-Baptiste Kempf http://www.jbkempf.com/ From fcvlcdev at free.fr Thu Jun 10 23:25:31 2010 From: fcvlcdev at free.fr (Francois Cartegnie) Date: Thu, 10 Jun 2010 23:25:31 +0200 Subject: [vlc-devel] [PATCH 1/2] Use pathconf() as NAME_MAX might be undefined Message-ID: <1276205132-12294-1-git-send-email-fcvlcdev@free.fr> SunOS deprecates and comments the NAME_MAX declartion. The defined _POSIX_NAME_MAX does not reflect the real value (14). Posix says that the reentrant readdir can either take NAME_MAX or pathconf. --- src/text/filesystem.c | 36 +++++++++++++++++++++++++----------- 1 files changed, 25 insertions(+), 11 deletions(-) diff --git a/src/text/filesystem.c b/src/text/filesystem.c index e3147eb..3dc475c 100644 --- a/src/text/filesystem.c +++ b/src/text/filesystem.c @@ -37,15 +37,12 @@ #include #include -#include /* NAME_MAX */ -#if !defined(NAME_MAX) && defined(_POSIX_NAME_MAX) -# define NAME_MAX _POSIX_NAME_MAX -#endif #include #include #ifdef HAVE_DIRENT_H # include #endif +#include #ifdef HAVE_SYS_STAT_H # include #endif @@ -325,13 +322,30 @@ char *vlc_readdir( DIR *dir ) return FromWide (ent->d_name); #else - struct dirent *ent; - struct - { - struct dirent ent; - char buf[NAME_MAX + 1]; - } buf; - int val = readdir_r (dir, &buf.ent, &ent); + struct dirent *ent, *buf; + int fd; + int name_max; + #ifdef __SunOS + fd = dir->dd_fd; /* no dirfd on solaris */ + #else + fd = dirfd( dir ); + #endif + if ( fd == -1 ) return NULL; + + name_max = fpathconf( fd, _PC_NAME_MAX ); + if ( name_max == -1 ) + #ifdef NAME_MAX + name_max = NAME_MAX; + #else + name_max = 260; /* libvlc.h FILENAME_MAX */ + #endif + + buf = (struct dirent *) malloc( (size_t) offsetof(struct dirent, d_name) + + ++name_max * sizeof(char) ); + if ( buf == NULL ) return NULL; + int val = readdir_r (dir, buf, &ent); + if ( !ent || val) free(buf); + if (val) { errno = val; -- 1.6.4.4 From fcvlcdev at free.fr Thu Jun 10 23:25:32 2010 From: fcvlcdev at free.fr (Francois Cartegnie) Date: Thu, 10 Jun 2010 23:25:32 +0200 Subject: [vlc-devel] [PATCH 2/2] Map page zero to '(null)' string if needed In-Reply-To: <1276205132-12294-1-git-send-email-fcvlcdev@free.fr> References: <1276205132-12294-1-git-send-email-fcvlcdev@free.fr> Message-ID: <1276205132-12294-2-git-send-email-fcvlcdev@free.fr> --- bin/vlc.c | 18 +++++++++++++++++- configure.ac | 22 ++++++++++++++++++++++ 2 files changed, 39 insertions(+), 1 deletions(-) diff --git a/bin/vlc.c b/bin/vlc.c index 2b287f1..cce0164 100644 --- a/bin/vlc.c +++ b/bin/vlc.c @@ -40,10 +40,13 @@ #include #include -#ifdef __APPLE__ +#if defined(__APPLE__) || defined(NEED_PRINTF_PAGEZEROFIX) #include #endif +#ifdef NEED_PRINTF_PAGEZEROFIX +#include +#endif /* Explicit HACK */ extern void LocaleFree (const char *); @@ -165,6 +168,16 @@ int main( int i_argc, const char *ppsz_argv[] ) /* Block all these signals */ pthread_sigmask (SIG_BLOCK, &set, NULL); +#ifdef NEED_PRINTF_PAGEZEROFIX + /* try to fix null strings if glibc doesn't + this can't work on latest Linux & BSD because of exploit fix + */ + int page_zero_mapped = ( mmap(0, sysconf( _SC_PAGESIZE ), + PROT_WRITE|PROT_READ, + MAP_FIXED|MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) == 0 ); + if ( page_zero_mapped ) + memcpy((char *)0, "(null)\0", 7); +#endif /* Note that FromLocale() can be used before libvlc is initialized */ const char *argv[i_argc + 4]; int argc = 0; @@ -237,5 +250,8 @@ out: _exit (0); } #endif +#ifdef NEED_PRINTF_PAGEZEROFIX + if ( page_zero_mapped ) munmap( 0, sysconf( _SC_PAGESIZE ) ); +#endif return 0; } diff --git a/configure.ac b/configure.ac index bc74f62..37ed6d1 100644 --- a/configure.ac +++ b/configure.ac @@ -657,6 +657,28 @@ AC_CHECK_FUNC(getopt_long,, [ ]) AC_SUBST(GNUGETOPT_LIBS) +dnl Solaris and non glibc builds will crash on NULL strings passed to *printf +if test "${SYS}" == "solaris" -a "$cross_compiling" != "yes"; then + AC_CACHE_CHECK([for printf page zero fix], [ac_cv_printf_page_zero_fix], [ + AC_RUN_IFELSE([ + AC_LANG_SOURCE([[ + #include + int main(){ + char foo[] = "(****)"; + sprintf(foo, "%s", NULL); + return 0; + } + ]]) + ], + [ac_cv_printf_page_zero_fix=no], + [ac_cv_printf_page_zero_fix=yes], + [ac_cv_printf_page_zero_fix=skipped]) + ]) + if test "$ac_cv_printf_page_zero_fix" = yes; then + AC_DEFINE(NEED_PRINTF_PAGEZEROFIX, 1, [*printf requires NULL to be fixed]) + fi +fi + if test "${SYS}" != "mingw32" -a "${SYS}" != "mingwce"; then AC_CHECK_LIB(m,cos,[ VLC_ADD_LIBS([adjust wave ripple psychedelic gradient a52tofloat32 dtstofloat32 x264 goom visual panoramix rotate noise grain scene kate flac lua chorus_flanger],[-lm]) -- 1.6.4.4 From xtophe at chewa.net Thu Jun 10 23:37:24 2010 From: xtophe at chewa.net (Christophe Mutricy) Date: Thu, 10 Jun 2010 23:37:24 +0200 Subject: [vlc-devel] [vlc-commits] commit: Win7: new buttons for taskbar (Jean-Baptiste Kempf ) In-Reply-To: <20100601213130.BF058E6101@albiero.videolan.org> References: <20100601213130.BF058E6101@albiero.videolan.org> Message-ID: <20100610213724.GV30509@chewa.net> On Tue, Jun 01, 10 at 23:31 +0200, git at videolan.org wrote: > vlc | branch: master | Jean-Baptiste Kempf | Tue Jun 1 23:30:59 2010 +0200| [19bc50ee63bd5cd5b7b87c151e011bc5dec27b93] | committer: Jean-Baptiste Kempf > > Win7: new buttons for taskbar > > .../gui/qt4/pixmaps/win7/win7thumbnail_next.png | Bin 0 -> 337 bytes > .../gui/qt4/pixmaps/win7/win7thumbnail_pause.png | Bin 0 -> 237 bytes > .../gui/qt4/pixmaps/win7/win7thumbnail_play.png | Bin 0 -> 323 bytes > .../gui/qt4/pixmaps/win7/win7thumbnail_prev.png | Bin 0 -> 330 bytes Adding files without modifying any {Modules,Makefile}.am is suspicious -- Xtophe From brezhoneg1 at yahoo.fr Thu Jun 10 23:42:45 2010 From: brezhoneg1 at yahoo.fr (brezhoneg1) Date: Thu, 10 Jun 2010 23:42:45 +0200 Subject: [vlc-devel] [vlc-commits] commit: core: fix a wrong division (Erwan Tulou ) In-Reply-To: <20100610205122.GA5535@videolan.org> References: <20100610164119.1F20EF1730@albiero.videolan.org> <20100610205122.GA5535@videolan.org> Message-ID: <4C115C55.6030603@yahoo.fr> Le 10/06/2010 22:51, Jean-Baptiste Kempf a ?crit : > On Thu, Jun 10, 2010 at 06:41:19PM +0200, git at videolan.org wrote : > >> core: fix a wrong division >> > Backport wanted? > > Yes, Sir Rgds From brezhoneg1 at yahoo.fr Thu Jun 10 23:47:57 2010 From: brezhoneg1 at yahoo.fr (brezhoneg1) Date: Thu, 10 Jun 2010 23:47:57 +0200 Subject: [vlc-devel] [vlc-commits] commit: msw: let zooming to exceed the display size (Erwan Tulou ) In-Reply-To: <20100610205131.GB5535@videolan.org> References: <20100610164119.B911EF1922@albiero.videolan.org> <20100610205131.GB5535@videolan.org> Message-ID: <4C115D8D.70902@yahoo.fr> Le 10/06/2010 22:51, Jean-Baptiste Kempf a ?crit : > On Thu, Jun 10, 2010 at 06:41:19PM +0200, git at videolan.org wrote : > >> vlc | branch: master | Erwan Tulou | Thu Jun 10 18:19:48 2010 +0200| [c8b51e05d71834aefd11c5d89bf193132bd1305d] | committer: Erwan Tulou >> >> msw: let zooming to exceed the display size >> > Backport wanted? > - > Yes. It was regarded as a problem on the forum. It has been tested on WinXP (directx, gdi, opengl). Some more tests on Window7 would be a good thing to ensure there is no regression whatever the vout driver to be used. Rgds From jb at videolan.org Fri Jun 11 00:36:11 2010 From: jb at videolan.org (Jean-Baptiste Kempf) Date: Fri, 11 Jun 2010 00:36:11 +0200 Subject: [vlc-devel] [vlc-commits] commit: msw: let zooming to exceed the display size (Erwan Tulou ) In-Reply-To: <4C115D8D.70902@yahoo.fr> References: <20100610164119.B911EF1922@albiero.videolan.org> <20100610205131.GB5535@videolan.org> <4C115D8D.70902@yahoo.fr> Message-ID: <20100610223611.GA21369@videolan.org> On Thu, Jun 10, 2010 at 11:47:57PM +0200, brezhoneg1 wrote : > Le 10/06/2010 22:51, Jean-Baptiste Kempf a ?crit : >> On Thu, Jun 10, 2010 at 06:41:19PM +0200, git at videolan.org wrote : >> >>> vlc | branch: master | Erwan Tulou | Thu Jun 10 18:19:48 2010 +0200| [c8b51e05d71834aefd11c5d89bf193132bd1305d] | committer: Erwan Tulou >>> >>> msw: let zooming to exceed the display size >>> >> Backport wanted? >> - >> > > Yes. It was regarded as a problem on the forum. > > It has been tested on WinXP (directx, gdi, opengl). Some more tests on > Window7 would be a good thing to ensure there is no regression whatever > the vout driver to be used. Ok, then you need to explain me what to test on Win7 :D Best Regards, -- Jean-Baptiste Kempf http://www.jbkempf.com/ From brezhoneg1 at yahoo.fr Fri Jun 11 00:48:02 2010 From: brezhoneg1 at yahoo.fr (brezhoneg1) Date: Fri, 11 Jun 2010 00:48:02 +0200 Subject: [vlc-devel] [vlc-commits] commit: msw: let zooming to exceed the display size (Erwan Tulou ) In-Reply-To: <20100610223611.GA21369@videolan.org> References: <20100610164119.B911EF1922@albiero.videolan.org> <20100610205131.GB5535@videolan.org> <4C115D8D.70902@yahoo.fr> <20100610223611.GA21369@videolan.org> Message-ID: <4C116BA2.2040909@yahoo.fr> Le 11/06/2010 00:36, Jean-Baptiste Kempf a ?crit : > On Thu, Jun 10, 2010 at 11:47:57PM +0200, brezhoneg1 wrote : > >> Le 10/06/2010 22:51, Jean-Baptiste Kempf a ?crit : >> >>> On Thu, Jun 10, 2010 at 06:41:19PM +0200, git at videolan.org wrote : >>> >>> >>>> vlc | branch: master | Erwan Tulou | Thu Jun 10 18:19:48 2010 +0200| [c8b51e05d71834aefd11c5d89bf193132bd1305d] | committer: Erwan Tulou >>>> >>>> msw: let zooming to exceed the display size >>>> >>>> >>> Backport wanted? >>> - >>> >>> >> Yes. It was regarded as a problem on the forum. >> >> It has been tested on WinXP (directx, gdi, opengl). Some more tests on >> Window7 would be a good thing to ensure there is no regression whatever >> the vout driver to be used. >> > Ok, then you need to explain me what to test on Win7 :D > > Just go fullscreen with a video on Win7 and play with 'o', alt-'o' and alt-shift-'o' hotkeys Video should now expand beyond the display limit when pressing alt-o, providing a zooming effect. Since this may be dependent on the driver (direct3d, .... ) or the overlay stuff, check these various configs. Thanks From jb at videolan.org Fri Jun 11 00:52:25 2010 From: jb at videolan.org (Jean-Baptiste Kempf) Date: Fri, 11 Jun 2010 00:52:25 +0200 Subject: [vlc-devel] [vlc-commits] commit: msw: let zooming to exceed the display size (Erwan Tulou ) In-Reply-To: <4C116BA2.2040909@yahoo.fr> References: <20100610164119.B911EF1922@albiero.videolan.org> <20100610205131.GB5535@videolan.org> <4C115D8D.70902@yahoo.fr> <20100610223611.GA21369@videolan.org> <4C116BA2.2040909@yahoo.fr> Message-ID: <20100610225225.GA30552@videolan.org> On Fri, Jun 11, 2010 at 12:48:02AM +0200, brezhoneg1 wrote : > Video should now expand beyond the display limit when pressing alt-o, > providing a zooming effect. What is the display limit? Best Regards, -- Jean-Baptiste Kempf http://www.jbkempf.com/ From brezhoneg1 at yahoo.fr Fri Jun 11 00:58:51 2010 From: brezhoneg1 at yahoo.fr (brezhoneg1) Date: Fri, 11 Jun 2010 00:58:51 +0200 Subject: [vlc-devel] [vlc-commits] commit: msw: let zooming to exceed the display size (Erwan Tulou ) In-Reply-To: <20100610225225.GA30552@videolan.org> References: <20100610164119.B911EF1922@albiero.videolan.org> <20100610205131.GB5535@videolan.org> <4C115D8D.70902@yahoo.fr> <20100610223611.GA21369@videolan.org> <4C116BA2.2040909@yahoo.fr> <20100610225225.GA30552@videolan.org> Message-ID: <4C116E2A.5070504@yahoo.fr> Le 11/06/2010 00:52, Jean-Baptiste Kempf a ?crit : > On Fri, Jun 11, 2010 at 12:48:02AM +0200, brezhoneg1 wrote : > >> Video should now expand beyond the display limit when pressing alt-o, >> providing a zooming effect. >> > What is the display limit? > > The screen. You should now be able to go from x0.2 to x10 without being stopped by the screen boundaries. From jb at videolan.org Fri Jun 11 01:25:18 2010 From: jb at videolan.org (Jean-Baptiste Kempf) Date: Fri, 11 Jun 2010 01:25:18 +0200 Subject: [vlc-devel] [vlc-commits] Tag 1.1.0-rc3 : Jean-Baptiste Kempf : VLC 1.1.0-rc3 - 'The Luggage' In-Reply-To: <20100610230113.8B3CDF2827@albiero.videolan.org> References: <20100610230113.8B3CDF2827@albiero.videolan.org> Message-ID: <20100610232518.GA4271@videolan.org> On Fri, Jun 11, 2010 at 01:01:13AM +0200, git at videolan.org wrote : > [vlc/vlc-1.1] [branch: refs/tags/1.1.0-rc3] ftp://ftp.videolan.org/pub/testing/vlc-1.1.0-rc3/vlc-1.1.0-rc3.tar.bz2 Best Regards, -- Jean-Baptiste Kempf http://www.jbkempf.com/ From jai4forum at yahoo.fr Fri Jun 11 01:37:49 2010 From: jai4forum at yahoo.fr (Just an Illusion) Date: Thu, 10 Jun 2010 23:37:49 +0000 (GMT) Subject: [vlc-devel] Please don't put attached files into the mailing list messages Message-ID: <803945.46318.qm@web28503.mail.ukl.yahoo.com> Hi all, I am not a moderator but I want to remind to every body than a mailing list is not a way to transmit some patches or other attached files. If the developper want to transmit a patch to users, they must include it into the git or svn repository. If thay want to transfer some 'unofficial' and 'alpha' or 'beta' codes, they must have an other way. Please contact the Vlc Team to obtain the regular way. As reminder: when you send a mail on any mailing list, the message is automatically send to all current members. If you provide too lot of messages with an attached file, then you can fill-up the members' mailbox and all the next messages (with possible important informations) will be automtically dropped due to 'full mailbox' error. Thanks, JaI From jb at videolan.org Fri Jun 11 01:40:21 2010 From: jb at videolan.org (Jean-Baptiste Kempf) Date: Fri, 11 Jun 2010 01:40:21 +0200 Subject: [vlc-devel] Please don't put attached files into the mailing list messages In-Reply-To: <803945.46318.qm@web28503.mail.ukl.yahoo.com> References: <803945.46318.qm@web28503.mail.ukl.yahoo.com> Message-ID: <20100610234021.GA7259@videolan.org> Hello, On Thu, Jun 10, 2010 at 11:37:49PM +0000, Just an Illusion wrote : > I am not a moderator but I want to remind to every body than a mailing list is not a way to transmit some patches or other attached files. On the contrary, sending patch to THIS mailing list is the way to do it. > If the developper want to transmit a patch to users, they must include it into the git or svn repository. Or send it to this mailing list. > If thay want to transfer some 'unofficial' and 'alpha' or 'beta' codes, they must have an other way. Please contact the Vlc Team to obtain the regular way. Or send it to this mailing list. > As reminder: when you send a mail on any mailing list, the message is automatically send to all current members. If you provide too lot of messages with an attached file, then you can fill-up the members' mailbox and all the next messages (with possible important informations) will be automtically dropped due to 'full mailbox' error. Take a bigger mailbox or unsubscribe from this list. Best Regards, -- Jean-Baptiste Kempf http://www.jbkempf.com/ From remi at remlab.net Fri Jun 11 02:32:03 2010 From: remi at remlab.net (=?UTF-8?Q?R=C3=A9mi_Denis-Courmont?=) Date: Fri, 11 Jun 2010 02:32:03 +0200 Subject: [vlc-devel] Please don't put attached files into the mailing list messages In-Reply-To: <803945.46318.qm@web28503.mail.ukl.yahoo.com> References: <803945.46318.qm@web28503.mail.ukl.yahoo.com> Message-ID: On Thu, 10 Jun 2010 23:37:49 +0000 (GMT), Just an Illusion wrote: > Hi all, > I am not a moderator but I want to remind to every body than a mailing > list is not a way to transmit some patches or other attached files. Actually, by the git patch work flow, a mailing list is a way to send and review patches. -- R?mi Denis-Courmont http://www.remlab.net http://fi.linkedin.com/in/remidenis From kearygriffin at gmail.com Fri Jun 11 03:52:32 2010 From: kearygriffin at gmail.com (Keary Griffin) Date: Thu, 10 Jun 2010 21:52:32 -0400 Subject: [vlc-devel] [PATCH] vlc_execve: fix fork() version from segfaulting and also endless loop Message-ID: <1276221153-22851-1-git-send-email-kearygriffin@gmail.com> I was trying to work with the vlc_execve function to add some new functionality to the livehttp module, but was having some problems getting it to work. The only other place I could find it used was in the oldhttp module, in the http-handlers section. I tried using the http-handlers and ended up having the same issues. The first problem seems to be the vlc_execve tries to free the output buffer (*pp_data) before doing anything. The oldhttp module never initializes *pp_data to anything before calling vlc_execve, so the free() would end up segfaulting. I fixed this by commenting out the free() as I can't find any other code that uses vlc_execve, and so assume the calling convention of oldhttp (in not initializing the pointer to anything) is the correct behavior. Let me know if this is an incorrect assumption and I should fix this by initializing *pp_data inside of the oldhttp module. The second problem was the function never seemed to return. I'm not really familiar with POSIX polling/processes, so I'm not sure I fixed it the correct way. The problem seemed to be that in the while(!p_object->b_die) loop that does the I/O with the process (writing stdin and saving stdout), there was no exit case and it would stay in the loop forever, even after the process ended. I fixed it by keeping track of when all I/O is finished, and then exiting the loop. Thanks Keary Keary Griffin (1): vlc_execve: fix fork() version from segfaulting and also endless loop src/extras/libc.c | 12 +++++++++++- 1 files changed, 11 insertions(+), 1 deletions(-) From kearygriffin at gmail.com Fri Jun 11 03:52:33 2010 From: kearygriffin at gmail.com (Keary Griffin) Date: Thu, 10 Jun 2010 21:52:33 -0400 Subject: [vlc-devel] [PATCH] vlc_execve: fix fork() version from segfaulting and also endless loop In-Reply-To: <1276221153-22851-1-git-send-email-kearygriffin@gmail.com> References: <1276221153-22851-1-git-send-email-kearygriffin@gmail.com> Message-ID: <1276221153-22851-2-git-send-email-kearygriffin@gmail.com> pp_data was freed near start of function, but never set to anything before call to vlc_execve: Removed. Added code to I/O loop, if there is no more data to read & no more data to write, end loop --- src/extras/libc.c | 9 +++------ 1 files changed, 3 insertions(+), 6 deletions(-) diff --git a/src/extras/libc.c b/src/extras/libc.c index 1be7fe8..457e1d1 100644 --- a/src/extras/libc.c +++ b/src/extras/libc.c @@ -596,6 +596,7 @@ int vlc_execve( vlc_object_t *p_object, int i_argc, char *const *ppsz_argv, #ifdef HAVE_FORK # define BUFSIZE 1024 int fds[2], i_status; + bool b_readFinished = false; if (socketpair (PF_LOCAL, SOCK_STREAM, 0, fds)) return -1; @@ -632,14 +633,12 @@ int vlc_execve( vlc_object_t *p_object, int i_argc, char *const *ppsz_argv, close (fds[1]); *pi_data = 0; - if (*pp_data) - free (*pp_data); *pp_data = NULL; if (i_in == 0) shutdown (fds[0], SHUT_WR); - while (!p_object->b_die) + while (!p_object->b_die && ( !b_readFinished || i_in > 0 ) ) { struct pollfd ufd[1]; memset (ufd, 0, sizeof (ufd)); @@ -666,6 +665,7 @@ int vlc_execve( vlc_object_t *p_object, int i_argc, char *const *ppsz_argv, case -1: case 0: shutdown (fds[0], SHUT_RD); + b_readFinished = true; break; default: @@ -847,9 +847,6 @@ int vlc_execve( vlc_object_t *p_object, int i_argc, char *const *ppsz_argv, /* Read output from the child process. */ *pi_data = 0; - if( *pp_data ) - free( pp_data ); - *pp_data = NULL; *pp_data = malloc( 1025 ); /* +1 for \0 */ while ( !p_object->b_die ) -- 1.7.0.4 From weichetsai at gmail.com Fri Jun 11 04:53:24 2010 From: weichetsai at gmail.com (charles) Date: Fri, 11 Jun 2010 10:53:24 +0800 Subject: [vlc-devel] vlc debug problem Message-ID: Dear VLC team: I can't suspend thread at vlc running, and I mask the line that set thread is block in /vlc/bin/vlc.c (pthread_sigmask (SIG_BLOCK, &set, NULL);), then It can suspend in any time. I want to know than it cause any problem of vlc. thank. charles -------------- next part -------------- An HTML attachment was scrubbed... URL: From pankajdnapster at gmail.com Fri Jun 11 13:01:33 2010 From: pankajdnapster at gmail.com (Pankaj yadav) Date: Fri, 11 Jun 2010 16:31:33 +0530 Subject: [vlc-devel] Please don't put attached files into the mailing list messages In-Reply-To: References: <803945.46318.qm@web28503.mail.ukl.yahoo.com> Message-ID: height of stupidity. Who is this instructor? -- Pankaj Yadav Open Source Enthusiast From pankajdnapster at gmail.com Fri Jun 11 13:01:34 2010 From: pankajdnapster at gmail.com (Pankaj yadav) Date: Fri, 11 Jun 2010 16:31:34 +0530 Subject: [vlc-devel] Please don't put attached files into the mailing list messages In-Reply-To: References: <803945.46318.qm@web28503.mail.ukl.yahoo.com> Message-ID: height of stupidity. Who is this instructor? On 6/11/10, R?mi Denis-Courmont wrote: > > On Thu, 10 Jun 2010 23:37:49 +0000 (GMT), Just an Illusion > wrote: >> Hi all, >> I am not a moderator but I want to remind to every body than a mailing >> list is not a way to transmit some patches or other attached files. > > Actually, by the git patch work flow, a mailing list is a way to send and > review patches. > > -- > R?mi Denis-Courmont > http://www.remlab.net > http://fi.linkedin.com/in/remidenis > > _______________________________________________ > vlc-devel mailing list > To unsubscribe or modify your subscription options: > http://mailman.videolan.org/listinfo/vlc-devel > -- Pankaj Yadav Open Source Enthusiast From juhovh at iki.fi Fri Jun 11 13:28:21 2010 From: juhovh at iki.fi (=?ISO-8859-1?Q?Juho_V=E4h=E4-Herttua?=) Date: Fri, 11 Jun 2010 14:28:21 +0300 Subject: [vlc-devel] Please don't put attached files into the mailing list messages In-Reply-To: References: <803945.46318.qm@web28503.mail.ukl.yahoo.com> Message-ID: <4C121DD5.8020605@iki.fi> 11.6.2010 14:01, Pankaj yadav kirjoitti: > height of stupidity. Who is this instructor? > I'm not sure what is the height of stupidity here, but I'm sure we could continue this topic with a flamewar about top-posting, since you just happened to top-post here and it annoyes me a bit... To save everyone's time, I recommend not continuing this topic further though. :) To introduce you guys to each other, Jai Menon, Pankaj Yadav and myself are all GSoC students, R?mi and Jean-Baptiste are fairly active VLC developers. Since VLC repositories are not all on the same server in same location where they could be easily tracked, sending patches to the mailing list indeed makes very much sense. That's why git has git-format-patch and git-send-email commands, to which I believe R?mi also referred to. I'm fine with both workflows, but entering a new project it's good to find out how it's done there, now I guess it's cleared in case of VLC. So move on, nothing to see here. Juho From juhovh at iki.fi Fri Jun 11 13:32:48 2010 From: juhovh at iki.fi (=?ISO-8859-1?Q?Juho_V=E4h=E4-Herttua?=) Date: Fri, 11 Jun 2010 14:32:48 +0300 Subject: [vlc-devel] Please don't put attached files into the mailing list messages In-Reply-To: <4C121DD5.8020605@iki.fi> References: <803945.46318.qm@web28503.mail.ukl.yahoo.com> <4C121DD5.8020605@iki.fi> Message-ID: <4C121EE0.4080207@iki.fi> 11.6.2010 14:28, Juho V?h?-Herttua wrote: > To introduce you guys to each other, Jai Menon, Pankaj Yadav and > myself are all GSoC students, R?mi and Jean-Baptiste are fairly active Sorry Jai, it wasn't you sending the post, just someone completely unrelated. I should check the original message before sending. :) Juho From jakob.leben at gmail.com Fri Jun 11 13:48:55 2010 From: jakob.leben at gmail.com (Jakob Leben) Date: Fri, 11 Jun 2010 13:48:55 +0200 Subject: [vlc-devel] Please don't put attached files into the mailing list messages In-Reply-To: <803945.46318.qm@web28503.mail.ukl.yahoo.com> References: <803945.46318.qm@web28503.mail.ukl.yahoo.com> Message-ID: On Fri, Jun 11, 2010 at 1:37 AM, Just an Illusion wrote: > ...Please contact the Vlc Team to obtain the regular way.... > Hmmm, sounds uncannily bot-ish. Which would also explain any lack of intelligence... -------------- next part -------------- An HTML attachment was scrubbed... URL: From jmenon86 at gmail.com Fri Jun 11 15:08:22 2010 From: jmenon86 at gmail.com (Jai Menon) Date: Fri, 11 Jun 2010 18:38:22 +0530 Subject: [vlc-devel] [PATCH 1/1] Matroska : Set default compression type for the ContentCompAlgo element to 0 (indicating zlib). Some muxers (for example mkvmerge v4.0.0) do not write ebml elements which correspond to the default values (as defined in the spec). Message-ID: <1276261702-19622-1-git-send-email-jmenon86@gmail.com> --- modules/demux/mkv/matroska_segment_parse.cpp | 2 ++ 1 files changed, 2 insertions(+), 0 deletions(-) diff --git a/modules/demux/mkv/matroska_segment_parse.cpp b/modules/demux/mkv/matroska_segment_parse.cpp index 1abec2b..3e1edc0 100644 --- a/modules/demux/mkv/matroska_segment_parse.cpp +++ b/modules/demux/mkv/matroska_segment_parse.cpp @@ -395,6 +395,8 @@ void matroska_segment_c::ParseTrackEntry( KaxTrackEntry *m ) { EbmlMaster *compr = static_cast(l3); MkvTree( sys.demuxer, 5, "Content Compression" ); + //Default compression type is 0 (Zlib) + tk->i_compression_type = MATROSKA_COMPRESSION_ZLIB; for( size_t n = 0; n < compr->ListSize(); n++ ) { EbmlElement *l4 = (*compr)[n]; -- 1.7.0.5 From rem at videolan.org Fri Jun 11 15:30:23 2010 From: rem at videolan.org (=?iso-8859-1?q?R=E9mi?= Denis-Courmont) Date: Fri, 11 Jun 2010 16:30:23 +0300 Subject: [vlc-devel] Please don't put attached files into the mailing list messages In-Reply-To: References: <803945.46318.qm@web28503.mail.ukl.yahoo.com> Message-ID: <201006111630.23693.rem@videolan.org> On Friday 11 June 2010 14:01:33 Pankaj yadav, you wrote: > height of stupidity. Who is this instructor? I assume I am, by far, the most frequent users of the word 'stupid' on this mailing list (feel free to blame me for that). But at least, I try to associate it to actions (ideas, commits...), not to *people*. In fact, I am not a bug fan of ad hominem[1] arguments. Every body has stupid ideas and acts in stupid and/or uninformed way every so often. For example, no latter than yesterday, I made a round trip to the San Diego airport. I just could not figure out how to get the key to my rental car out of the ignition. Now that's obviously ridiculously stupid. Does that mean *I* am stupid? Hopefully not. [1] http://en.wikipedia.org/wiki/Ad_hominem -- R?mi Denis-Courmont From rem at videolan.org Fri Jun 11 15:37:26 2010 From: rem at videolan.org (=?iso-8859-15?q?R=E9mi?= Denis-Courmont) Date: Fri, 11 Jun 2010 16:37:26 +0300 Subject: [vlc-devel] vlc debug problem In-Reply-To: References: Message-ID: <201006111637.26633.rem@videolan.org> On Friday 11 June 2010 05:53:24 charles, you wrote: > I can't suspend thread at vlc running, and I mask the line that set > thread is block > in /vlc/bin/vlc.c (pthread_sigmask (SIG_BLOCK, &set, NULL);), then It can > suspend in any time. That sounds like a problem with your debugger. VLC does not block the SIGSTOP signal (which cannot be blocked anyway). > I want to know than it cause any problem of vlc. It may abort the program if a signal occurs. -- R?mi Denis-Courmont From jakob.leben at gmail.com Fri Jun 11 21:38:57 2010 From: jakob.leben at gmail.com (Jakob Leben) Date: Fri, 11 Jun 2010 21:38:57 +0200 Subject: [vlc-devel] Please don't put attached files into the mailing list messages In-Reply-To: <201006111630.23693.rem@videolan.org> References: <803945.46318.qm@web28503.mail.ukl.yahoo.com> <201006111630.23693.rem@videolan.org> Message-ID: 2010/6/11 R?mi Denis-Courmont > In fact, I am not a bug fan of ad hominem[1] arguments. > Gratuitous verbal abuse or "name-calling" itself is *not* an *argumentum ad > hominem* or a logical fallacy. > [...] "You are just an ignorant twit." This is an insult and it is abusive, > but it is not an argument. Because it is not an argument, it cannot be a > fallacy [1] > It might be of interest that the ancient Greeks have already acknowledged the issue of using insults in arguments. However, argument ad hominem was rigorously embedded in their strict Science of Logic as one of many possible fallacious arguments. It means that a conclusion is drawn on the basis of how a person is like, in case when that is unrelated to the matter of the argument. The judgment about person thus stands on the place of premise, like: this person is X (or like X ) -> therefore Y. However, in the example of judegment about a person that was given by this discussion thread, the judgement stands on the place of conclusion, like: his writing is like X -> therefore he is Y ( == stupid ). Similarily, from the stupidity, which was in that case not an ungrounded premise, we were able to make further assumption that he (it) might even be a bot. As R?mi has pointed out though, It often happens that conclusions are not grounded enough. And the case at stake might as well be an over-generalization from a property of a deed, to an essential property of a person as such. With generalizations we are to be as conservative as possible, especially because we tend to commit them more often when the subject of the argument is another person, than ourselves, and thus we move from Logic into the area of Morality. :) [1] http://en.wikipedia.org/wiki/Ad_hominem -------------- next part -------------- An HTML attachment was scrubbed... URL: From remi at remlab.net Sat Jun 12 00:55:37 2010 From: remi at remlab.net (=?UTF-8?Q?R=C3=A9mi_Denis-Courmont?=) Date: Sat, 12 Jun 2010 00:55:37 +0200 Subject: [vlc-devel] =?utf-8?q?=5Bvlc-commits=5D_commit=3A_Revert_=22Rever?= =?utf-8?q?t_=22redundant_includes_of_vlc=5Fplaylist=2Eh=22=22_=28_Ilkka_O?= =?utf-8?q?llakka_=29?= In-Reply-To: <20100611193248.3271DF3CBC@albiero.videolan.org> References: <20100611193248.3271DF3CBC@albiero.videolan.org> Message-ID: <9159a684316836e022baf91c9d1e6f4f@chewa.net> On Fri, 11 Jun 2010 21:32:48 +0200 (CEST), git at videolan.org wrote: > vlc | branch: master | Ilkka Ollakka | Fri Jun 11 > 22:28:32 2010 +0300| [c78699e53d95924690f12c14dad499b82e84c1bb] | > committer: Ilkka Ollakka > > Revert "Revert "redundant includes of vlc_playlist.h"" > > This reverts commit eca93931a367e3acedaa6028e8843552ced4a1d0. > and fixes taglib compile Or the more evil solution: git reset --hard HEAD^ git push --force -- R?mi Denis-Courmont http://www.remlab.net http://fi.linkedin.com/in/remidenis From joshua.allmann at gmail.com Sat Jun 12 07:53:03 2010 From: joshua.allmann at gmail.com (Josh Allmann) Date: Fri, 11 Jun 2010 22:53:03 -0700 Subject: [vlc-devel] ffmpeg rtsp access demuxer Message-ID: Hello, Here is a first attempt at integrating the RTSP layer from ffmpeg. It does so by adding an access demuxer to the VLC scaffolding for libavformat. All the major transports are working (udp, tcp, rtsp-http). I have not yet looked at features like auth or muxing, but I can do that once I know this patch is on the right track. Josh -------------- next part -------------- A non-text attachment was scrubbed... Name: 0001-Integrated-FFmpeg-RTSP.patch Type: text/x-patch Size: 5645 bytes Desc: not available URL: From fcvlcdev at free.fr Sat Jun 12 17:01:39 2010 From: fcvlcdev at free.fr (Francois Cartegnie) Date: Sat, 12 Jun 2010 17:01:39 +0200 Subject: [vlc-devel] Compilation time assertion failed. src/misc/threads.c Message-ID: <201006121701.39922.fcvlcdev@free.fr> SunCC build is broken since the compilation time check from commit e3c350269cf1b482d2f6842e5b31a83be27a1c40 Fixing vlc_mutex_t alignment to 1 byte makes it work. But I don't know which side (struct, assert?) needs to be fixed. Remi ? Francois From fcvlcdev at free.fr Sat Jun 12 17:05:17 2010 From: fcvlcdev at free.fr (Francois Cartegnie) Date: Sat, 12 Jun 2010 17:05:17 +0200 Subject: [vlc-devel] Compilation time assertion failed. src/misc/threads.c In-Reply-To: <201006121701.39922.fcvlcdev@free.fr> References: <201006121701.39922.fcvlcdev@free.fr> Message-ID: <201006121705.17304.fcvlcdev@free.fr> Le samedi 12 juin 2010, Francois Cartegnie a ?crit : > Fixing vlc_mutex_t alignment to 1 byte makes it work. Oops, wrong session. This didn't fix anything. Any clue ? Francois From xtophe at chewa.net Sat Jun 12 23:43:40 2010 From: xtophe at chewa.net (Christophe Mutricy) Date: Sat, 12 Jun 2010 23:43:40 +0200 Subject: [vlc-devel] Compilation time assertion failed. src/misc/threads.c In-Reply-To: <201006121705.17304.fcvlcdev@free.fr> References: <201006121701.39922.fcvlcdev@free.fr> <201006121705.17304.fcvlcdev@free.fr> Message-ID: <20100612214340.GX30509@chewa.net> On Sat, Jun 12, 10 at 17:05 +0200, Francois Cartegnie wrote: > Le samedi 12 juin 2010, Francois Cartegnie a ?crit : > > Fixing vlc_mutex_t alignment to 1 byte makes it work. > Oops, wrong session. This didn't fix anything. > > Any clue ? Without the error message it is hard to guess. -- Xtophe From remi at remlab.net Sun Jun 13 06:14:21 2010 From: remi at remlab.net (=?ISO-8859-1?Q?R=E9mi?= Denis-Courmont) Date: Sat, 12 Jun 2010 21:14:21 -0700 Subject: [vlc-devel] Compilation time assertion failed. src/misc/threads.c In-Reply-To: <201006121701.39922.fcvlcdev@free.fr> References: <201006121701.39922.fcvlcdev@free.fr> Message-ID: <1276402461.15964.2.camel@Nokia-N900-51-1> ----- Message d'origine ----- > SunCC build is broken since the compilation time check from > commit e3c350269cf1b482d2f6842e5b31a83be27a1c40 > > Fixing vlc_mutex_t alignment to 1 byte makes it work. Any serious operating system will perform some atomic operations on mutexes. This avoids doing system calls on the non-contentious cases. And atomic operations typically need to be aligned, though this is obviously architecture-dependent. Besides, I fail to see how that could possibly change the quotient of sizeof's. It should be equal to the number of elements if the table regardless of the alignment/padding. > But I don't know which side (struct, assert?) needs to be fixed. Until proven wrong, I will assume the compiler is the side that needs fixing. -- R?mi From brezhoneg1 at yahoo.fr Sun Jun 13 10:36:56 2010 From: brezhoneg1 at yahoo.fr (brezhoneg1) Date: Sun, 13 Jun 2010 10:36:56 +0200 Subject: [vlc-devel] [vlc-commits] commit: Fixed mouse buttons state for msw vouts (close #3519). ( Laurent Aimar ) In-Reply-To: <4C1486C9.5070807@yahoo.fr> References: <4C1486C9.5070807@yahoo.fr> Message-ID: <4C1498A8.5040808@yahoo.fr> Hi, > > [vlc-commits] commit: Fixed mouse buttons state for msw vouts (close > #3519). ( Laurent Aimar ) > > *git at videolan.org* git at videolan.org > > /Sun Jun 13 01:14:14 CEST 2010/ > > * Previous message: [vlc-commits] commit: Qt: try to fix hangout > on win32 (Jean-Baptiste Kempf ) > > * Next message: [vlc-commits] commit: Fixed potential unaligned > access in vaapi/dxva2 picture copy. ( Laurent Aimar ) > > * *Messages sorted by:* [ date ] > > [ thread ] > > [ subject ] > > [ author ] > > > > ------------------------------------------------------------------------ > vlc/vlc-1.1 | branch: master | Laurent Aimar> | Sun Jun 13 00:44:31 2010 +0200| [0e9bb2b6027e3327cf00694cfef5aaa76f446602] | committer: Jean-Baptiste Kempf > > Fixed mouse buttons state for msw vouts (close #3519). > > Used SetCapture/ReleaseCapture to emulate what x11 seems to do by default. > (cherry picked from commit 2a1f2f0bf5f14963417fb758910db478ac407a62) > These mouse input quirks are most probably due to the GUI being managed by mainly two (even three) different threads - the main GUI thread (qt4) (owner of the parent windows) - the background thread (msw) (owner of the hwnd and hvideownd subwindows) - the vout thread (some windows interaction via vout_display_Control) Mouse input is a part of the win32 api that is subject to a set of warnings/limitations in a multiple thread (multiple event loops) environment (cf msdn doc) In addition, multiple threads prevent libvlc developers from easily (and legitimately) accessing mouse events when the mouse is over the video. (the only solution is based global hooks, that are not really straightforward) Imho, a clean solution would be to merge the two main threads (qt4 and msw) in a single one, i.e one single event loop, that just dispatches messages to their right window procedures. The third thread is less of a problem, but still part of the equation (beware of blocking calls) I do have a patch that does the following : - extend vout_window_t to request the vout window provider (qt4, skins2, libvlc dev thread, ...) thread to execute the code that is currently executed by the msw thread (basically, subwindows creation and configuration) - Since there is now only one single event loop, move message management in Windows Procs. This patch works satisfactorily. It just needs to be updated with latest vlc1.2 changes in msw. If this approach is deemed worth, I can update it and send it on this ml for review. Rgds Erwan10 -------------- next part -------------- An HTML attachment was scrubbed... URL: From hagrawal.250190 at gmail.com Sun Jun 13 11:06:50 2010 From: hagrawal.250190 at gmail.com (Harshit Agrawal) Date: Sun, 13 Jun 2010 05:06:50 -0400 Subject: [vlc-devel] Hi! Message-ID: An HTML attachment was scrubbed... URL: From jmenon86 at gmail.com Sun Jun 13 11:49:50 2010 From: jmenon86 at gmail.com (Jai Menon) Date: Sun, 13 Jun 2010 15:19:50 +0530 Subject: [vlc-devel] [PATCH] AVI : Set libavformat as the default AVI muxer. Message-ID: <1276422590-26015-1-git-send-email-jmenon86@gmail.com> --- modules/demux/avformat/avformat.c | 1 + modules/mux/avi.c | 2 +- 2 files changed, 2 insertions(+), 1 deletions(-) diff --git a/modules/demux/avformat/avformat.c b/modules/demux/avformat/avformat.c index b5974a4..70721ba 100644 --- a/modules/demux/avformat/avformat.c +++ b/modules/demux/avformat/avformat.c @@ -50,6 +50,7 @@ vlc_module_begin () set_capability( "sout mux", 2 ) add_string( "ffmpeg-mux", NULL, NULL, MUX_TEXT, MUX_LONGTEXT, true ) + add_shortcut( "avi" ) set_callbacks( OpenMux, CloseMux ) #endif #ifndef MERGE_FFMPEG diff --git a/modules/mux/avi.c b/modules/mux/avi.c index 0d2c4b6..8ae5a50 100644 --- a/modules/mux/avi.c +++ b/modules/mux/avi.c @@ -47,7 +47,7 @@ vlc_module_begin () set_description( N_("AVI muxer") ) set_category( CAT_SOUT ) set_subcategory( SUBCAT_SOUT_MUX ) - set_capability( "sout mux", 5 ) + set_capability( "sout mux", 1 ) add_shortcut( "avi" ) set_callbacks( Open, Close ) vlc_module_end () -- 1.7.1 From fenrir at elivagar.org Sun Jun 13 14:34:49 2010 From: fenrir at elivagar.org (Laurent Aimar) Date: Sun, 13 Jun 2010 14:34:49 +0200 Subject: [vlc-devel] [vlc-commits] commit: Fixed mouse buttons state for msw vouts (close #3519). ( Laurent Aimar ) In-Reply-To: <4C1498A8.5040808@yahoo.fr> References: <4C1486C9.5070807@yahoo.fr> <4C1498A8.5040808@yahoo.fr> Message-ID: <1276432489.31698.7.camel@localhost> On Sun, 2010-06-13 at 10:36 +0200, brezhoneg1 wrote: > Hi, > * [vlc-commits] commit: Fixed mouse buttons state for msw vouts > (close #3519). ( Laurent Aimar ) > > vlc/vlc-1.1 | branch: master | Laurent Aimar | Sun Jun 13 00:44:31 2010 +0200| [0e9bb2b6027e3327cf00694cfef5aaa76f446602] | committer: Jean-Baptiste Kempf > > > > Fixed mouse buttons state for msw vouts (close #3519). > > > > Used SetCapture/ReleaseCapture to emulate what x11 seems to do by default. > > (cherry picked from commit 2a1f2f0bf5f14963417fb758910db478ac407a62) > > > > These mouse input quirks are most probably due to the GUI being > managed by mainly two (even three) different threads In this case, I don't think so. It's just that by default, MSW and X11 do not handle the mouse buttons the same way (The issue is present even without the qt4 interface). > - the main GUI thread (qt4) (owner of the parent windows) > - the background thread (msw) (owner of the hwnd and > hvideownd subwindows) > - the vout thread (some windows interaction via > vout_display_Control) > > Mouse input is a part of the win32 api that is subject to a set of > warnings/limitations in a multiple thread (multiple event loops) > environment (cf msdn doc) > > In addition, multiple threads prevent libvlc developers from easily > (and legitimately) accessing mouse events when the mouse is over the > video. Yes I know, but I don't have the time/will to work on another solution myself. > Imho, a clean solution would be to merge the two main threads (qt4 > and msw) in a single one, i.e one single event loop, that just > dispatches messages to their right window procedures. The third thread > is less of a problem, but still part of the equation (beware of > blocking calls) > > I do have a patch that does the following : > > - extend vout_window_t to request the vout window provider (qt4, > skins2, libvlc dev thread, ...) thread to execute the code that is > currently executed by the msw thread (basically, subwindows creation > and configuration) > - Since there is now only one single event loop, move message > management in Windows Procs. > > This patch works satisfactorily. It just needs to be updated with > latest vlc1.2 changes in msw. If this approach is deemed worth, I can > update it and send it on this ml for review. Could you just send the current patch that you have? This way I could see what you mean exactly and the consequences. -- fenrir From rafael.carre at gmail.com Sun Jun 13 15:40:50 2010 From: rafael.carre at gmail.com (=?UTF-8?B?UmFmYcOrbCBDYXJyw6k=?=) Date: Sun, 13 Jun 2010 15:40:50 +0200 Subject: [vlc-devel] [VLC DBUS BUG] Multiple tracks addition by DBUS fails on a list In-Reply-To: References: Message-ID: <20100613154050.6483be6e@kru> On Sun, 13 Jun 2010 02:51:57 +0200 Rohit Yadav wrote: > Hello funman, Hi, > I'm trying to fix this bug, and I found that you're the author of the > the dbus module in vlc, I hope you may help me. In case I'm asking to > the wrong person, please ignore this mail or perhaps redirect me to > someone who can help. Well I think you should better ask on the ML (putting it in CC) IMO the bug is in MPRIS specification or the file manager. Did you subscribe to mpris at videolan.org ? > This is the bug as reported by one of my friends: (only one vlc > instance can run at a time...) > > ""In Ubuntu, when i open multiple files (audio or video) with vlc, > all the songs are added into playlist. But instead of 1st song in the > playlist, last song in the playlist starts playing.. > so every time i have to open the playlist and choose the first song > to be played..."" > > I've investigated that, when a user selects and opens multiple files > in a file manager viz. nautilus, instead of a list of files, > individual files are added and the DBUS_METHOD( AddTrack ) is called > for each of the files, which adds these files one by one and plays if > b_play is true. (This happens when a vlc instance is running.) > > On the other hand, if no vlc instance is running and user does select > and open multiple files, then it plays well; the song in the top of > the playlist is played. > > Best Regards, > Rohit Yadav -- Rafa?l Carr? -------------- next part -------------- A non-text attachment was scrubbed... Name: signature.asc Type: application/pgp-signature Size: 198 bytes Desc: not available URL: From remi at remlab.net Sun Jun 13 17:05:35 2010 From: remi at remlab.net (=?ISO-8859-1?Q?R=E9mi?= Denis-Courmont) Date: Sun, 13 Jun 2010 08:05:35 -0700 Subject: [vlc-devel] [vlc-commits] commit: qt4: don't add duplicate on convert if not needed (Ilkka Ollakka ) In-Reply-To: <20100613093320.EC905F3368@albiero.videolan.org> References: <20100613093320.EC905F3368@albiero.videolan.org> Message-ID: <1276441535.16276.2.camel@Nokia-N900-51-1> ----- Message d'origine ----- > vlc/vlc-1.1 | branch: master | Ilkka Ollakka | Sat May 15 > 20:43:36 2010 +0300| [a4b72e97ff81b7a77e841c165bab59673404ce7f] | committer: > Ilkka Ollakka > > qt4: don't add duplicate on convert if not needed this is not terribly useful. Sout_duplicate copies streams (n_dst-1) times, so if there is only one dst, it is basically free. From remi at remlab.net Sun Jun 13 17:10:20 2010 From: remi at remlab.net (=?ISO-8859-1?Q?R=E9mi?= Denis-Courmont) Date: Sun, 13 Jun 2010 08:10:20 -0700 Subject: [vlc-devel] [vlc-commits] commit: Fixed mouse buttons state for msw vouts (close #3519). ( Laurent Aimar ) In-Reply-To: <4C1498A8.5040808@yahoo.fr> References: <4C1486C9.5070807@yahoo.fr> <4C1498A8.5040808@yahoo.fr> Message-ID: <1276441820.16276.5.camel@Nokia-N900-51-1> Hello, Be reminded that this is not an HTML mailing list. From remi at remlab.net Sun Jun 13 17:25:36 2010 From: remi at remlab.net (=?ISO-8859-1?Q?R=E9mi?= Denis-Courmont) Date: Sun, 13 Jun 2010 08:25:36 -0700 Subject: [vlc-devel] [vlc-commits] commit: Fixed mouse buttons state for msw vouts (close #3519). ( Laurent Aimar ) In-Reply-To: <4C1498A8.5040808@yahoo.fr> References: <4C1486C9.5070807@yahoo.fr> <4C1498A8.5040808@yahoo.fr> Message-ID: <1276442736.16276.8.camel@Nokia-N900-51-1> ----- Message d'origine ----- >? ? ? ? In addition, multiple threads prevent libvlc developers from easily > (and legitimately) accessing mouse events when the mouse is over the video. >? ? ? ? (the only solution is based global hooks, that are not really > straightforward) There is essentially no way to fix this, unless msw/* is rewritten to not need any window events. And I would assume this is not possible. I actually plan to move the mouse clicks event handling from the display to the window, just like we already do for key presses, at least for X11. And it could be done for pointer position as well. But I would assume the msw displays still need some other events, say window resize... And there is no generic way to hook into the window proc of the application. We would need to require that a certain main loop is used (say Qt4). I can only imagine how unhappy the bindings developers would be. >? ? ? ? Imho, a clean solution would be to merge the two main threads (qt4 > and msw) in a single one, i.e one single event loop, that just > dispatches messages to their right window procedures. The third thread > is less of a problem, but still part of the equation (beware of blocking > calls) This is unlikely to work for libvlc. And it will be a PITA for non-embedded videos: the skins and Qt4 interfaces would have to provide the non-embedded videos too. And then what about when RC or HTTP is in use (but no "real" UI)? -- R?mi From xtophe at chewa.net Sun Jun 13 20:51:42 2010 From: xtophe at chewa.net (Christophe Mutricy) Date: Sun, 13 Jun 2010 20:51:42 +0200 Subject: [vlc-devel] [vlc-commits] commit: FR translation: reapply for the 3rd time the modifications of e283b16949cd199c298942a966dbddc7120c33a7 (Jean-Baptiste Kempf ) In-Reply-To: <20100613101431.637ECF34A4@albiero.videolan.org> References: <20100613101431.637ECF34A4@albiero.videolan.org> Message-ID: <20100613185142.GA30509@chewa.net> On Sun, Jun 13, 10 at 12:14 +0200, git at videolan.org wrote: > > Guys, I know translators know nothing about git, but seriously! Well i you don't tell the translator that you have done changes in his back, he will just contnue to translate his local file and not re-download foo.po They don't have more crystall balls that we have -- Xtophe From rafael.carre at gmail.com Sun Jun 13 21:01:28 2010 From: rafael.carre at gmail.com (=?UTF-8?q?Rafa=C3=ABl=20Carr=C3=A9?=) Date: Sun, 13 Jun 2010 21:01:28 +0200 Subject: [vlc-devel] [PATCH] INSERT_ELEM macro: assert arguments validity Message-ID: <1276455688-19994-1-git-send-email-rafael.carre@gmail.com> Assertion message shows the arguments and file/line from the file where the macro is used, not from the header. Tested on gcc version 4.4.3 (Ubuntu 4.4.3-4ubuntu5) --- include/vlc_arrays.h | 3 +++ src/playlist/tree.c | 1 - 2 files changed, 3 insertions(+), 1 deletions(-) diff --git a/include/vlc_arrays.h b/include/vlc_arrays.h index 390c1b6..3f91e11 100644 --- a/include/vlc_arrays.h +++ b/include/vlc_arrays.h @@ -25,6 +25,8 @@ #ifndef VLC_ARRAYS_H_ #define VLC_ARRAYS_H_ +#include + /** * \file * This file defines functions, structures and macros for handling arrays in vlc @@ -48,6 +50,7 @@ static inline void *realloc_down( void *ptr, size_t size ) #define INSERT_ELEM( p_ar, i_oldsize, i_pos, elem ) \ do \ { \ + assert( i_pos <= i_oldsize ); \ if( !i_oldsize ) (p_ar) = NULL; \ (p_ar) = VLCCVP realloc( p_ar, ((i_oldsize) + 1) * sizeof(*(p_ar)) ); \ if( !(p_ar) ) abort(); \ diff --git a/src/playlist/tree.c b/src/playlist/tree.c index dff0a73..e7fdebe 100644 --- a/src/playlist/tree.c +++ b/src/playlist/tree.c @@ -208,7 +208,6 @@ int playlist_NodeInsert( playlist_t *p_playlist, (void)p_playlist; assert( p_parent && p_parent->i_children != -1 ); if( i_position == -1 ) i_position = p_parent->i_children ; - assert( i_position <= p_parent->i_children); INSERT_ELEM( p_parent->pp_children, p_parent->i_children, -- 1.7.0.4 From brezhoneg1 at gmail.com Sun Jun 13 16:33:36 2010 From: brezhoneg1 at gmail.com (brezhoneg1) Date: Sun, 13 Jun 2010 16:33:36 +0200 Subject: [vlc-devel] [vlc-commits] commit: Fixed mouse buttons state for msw vouts (close #3519). ( Laurent Aimar ) In-Reply-To: <1276432489.31698.7.camel@localhost> References: <4C1486C9.5070807@yahoo.fr> <4C1498A8.5040808@yahoo.fr> <1276432489.31698.7.camel@localhost> Message-ID: <4C14EC40.1000300@gmail.com> Le 13/06/2010 14:34, Laurent Aimar a ?crit : > >> Imho, a clean solution would be to merge the two main threads (qt4 >> and msw) in a single one, i.e one single event loop, that just >> dispatches messages to their right window procedures. The third thread >> is less of a problem, but still part of the equation (beware of >> blocking calls) >> >> I do have a patch that does the following : >> >> - extend vout_window_t to request the vout window provider (qt4, >> skins2, libvlc dev thread, ...) thread to execute the code that is >> currently executed by the msw thread (basically, subwindows creation >> and configuration) >> - Since there is now only one single event loop, move message >> management in Windows Procs. >> >> This patch works satisfactorily. It just needs to be updated with >> latest vlc1.2 changes in msw. If this approach is deemed worth, I can >> update it and send it on this ml for review. >> > Could you just send the current patch that you have? This way I could > see what you mean exactly and the consequences. > > Hi, Attached are four patches - patch1 : extend vout_window_t (based on vout_display_t terminology) - patch2 : remove EventThread and create WindowSetup and WindowCleanup - patch 3 : impact on qt4 - patch 4 : create a basic vout window (to simplify msw) (as it is done in xcb) There are also an impact on drawable.c and skins2, but patches look like the qt4 one. I hope this is understandable .... Rgds Erwan10 -------------- next part -------------- An embedded and charset-unspecified text was scrubbed... Name: 0001-vout_window_t-extend-api.patch URL: -------------- next part -------------- An embedded and charset-unspecified text was scrubbed... Name: 0002-msw-remove-the-msw-thread-replaced-by-WindowSetup.patch URL: -------------- next part -------------- An embedded and charset-unspecified text was scrubbed... Name: 0003-qt4-use-the-new-vout_window_SendEventSetup-Cleanup.patch URL: -------------- next part -------------- An embedded and charset-unspecified text was scrubbed... Name: 0004-msw-create-a-basic-vout-provider-when-no-other-prov.patch URL: From ileoo at videolan.org Sun Jun 13 22:38:26 2010 From: ileoo at videolan.org (Ilkka Ollakka) Date: Sun, 13 Jun 2010 23:38:26 +0300 Subject: [vlc-devel] rtp/h264 issue In-Reply-To: <4BCF337F.2050702@hotbox.ru> References: <4BCF337F.2050702@hotbox.ru> Message-ID: <20100613203825.GH25090@linux-3azp> On Wed, Apr 21, 2010 at 09:18:55PM +0400, An L. Ber wrote: > Hello, Developers! > I've faced the issue with h264: When I transcode by VLC into h264 video > and transmits by rtp the generated sdp file crashes many video players > (and vlc client also). Hi, Thanks for your patch, merged in dedd7cd2ae0864dedfad367c1cbf916e1d315a00 by my modifications, so bugs are mine ;) -- Ilkka Ollakka Remember, UNIX spelled backwards is XINU. -------------- next part -------------- A non-text attachment was scrubbed... Name: not available Type: application/pgp-signature Size: 490 bytes Desc: not available URL: From brezhoneg1 at yahoo.fr Sun Jun 13 22:40:57 2010 From: brezhoneg1 at yahoo.fr (brezhoneg1) Date: Sun, 13 Jun 2010 22:40:57 +0200 Subject: [vlc-devel] [vlc-commits] commit: Fixed mouse buttons state for msw vouts (close #3519). ( Laurent Aimar ) In-Reply-To: <1276442736.16276.8.camel@Nokia-N900-51-1> References: <4C1486C9.5070807@yahoo.fr> <4C1498A8.5040808@yahoo.fr> <1276442736.16276.8.camel@Nokia-N900-51-1> Message-ID: <4C154259.6010706@yahoo.fr> Hi, Le 13/06/2010 17:25, R?mi Denis-Courmont a ?crit : > ----- Message d'origine ----- > >> In addition, multiple threads prevent libvlc developers from easily >> (and legitimately) accessing mouse events when the mouse is over the video. >> (the only solution is based global hooks, that are not really >> straightforward) >> > There is essentially no way to fix this, unless msw/* is rewritten to not need any window events. And I would assume this is not possible. > I sent earlier four patches (very bad quality ... just a proof of concept) to help clarify my ideas. I do think it is possible. msw will still provide the window procedure to manage its own events (the video hwnd), or even could use what Microsoft calls subclassing to spy on the parent events without interfering. Code is almost the same. It's just moved from the event loop to the window procedure. > I actually plan to move the mouse clicks event handling from the display to the window, just like we already do for key presses, at least for X11. And it could be done for pointer position as well. > > But I would assume the msw displays still need some other events, say window resize... And there is no generic way to hook into the window proc of the application. We would need to require that a certain main loop is used (say Qt4). I can only imagine how unhappy the bindings developers would be. > > This point is another thing, that is not too great in msw. Window resizing is mostly done is the vout Manage function (a polling system), and not based on message detection (except when no vout window is present). Some optimisation could be done to ensure a faster refresh, but that is another matter > >> Imho, a clean solution would be to merge the two main threads (qt4 >> and msw) in a single one, i.e one single event loop, that just >> dispatches messages to their right window procedures. The third thread >> is less of a problem, but still part of the equation (beware of blocking >> calls) >> > This is unlikely to work for libvlc. And it will be a PITA for non-embedded videos: the skins and Qt4 interfaces would have to provide the non-embedded videos too. And then what about when RC or HTTP is in use (but no "real" UI)? > > Patch #4 creates a basic vout window that acts as a fallback when no other vout window is available (dummy, rc, http, ...). Of course, this basic vout window has got its own thread/event loop. (Actually, it exactly mimics the xcb design in that matter) Rgds Erwan10 From jain.parveen01 at gmail.com Mon Jun 14 15:11:09 2010 From: jain.parveen01 at gmail.com (parveen jain) Date: Mon, 14 Jun 2010 18:41:09 +0530 Subject: [vlc-devel] trying to write a sample video streaming application In-Reply-To: References: <201006051608.14656.remi@remlab.net> Message-ID: Thanks Remi, I could explore the options of libVLC media player as mentioned by you.My main problem is that I have an encapsulated "video+audio" file in an "3GP" format.Video part is encoded in H.263 format and audio part is in AAC format.I am trying to stream these two parts in elementary H263 and PCMU format.Though I could stream these two streams(audio part after trasncoding into PCMU and video part as such) one by one in these formats.But I am not able to stream these two streams simultaneously in H263 and PCMU format. Is there any option avilable in VLC to do this ? In summary, I am trying to stream two elementary streams simultaneously on two different ports of a remote machine after getting these two streams from a specific file format.Is it possible to achieve this using VLC sout option? Regards, Parveen Jain On Mon, Jun 14, 2010 at 5:12 PM, Parveen Jain wrote: > > > > Date: Wed, 9 Jun 2010 12:04:15 +0200 > > From: googuy at gmail.com > > To: vlc-devel at videolan.org > > Subject: Re: [vlc-devel] [Videolan-devel] trying to write a sample video > streaming application > > > > The RTP stream out module do that unless you specify a mux parameter. > > Reference: > > > http://wiki.videolan.org/Documentation:Streaming_HowTo/Advanced_Streaming_Using_the_Command_Line#mux_2 > > > > You can also use the es stream output > > > > A lot of examples use mux=ts because it is easier to set the receiver > player. > > > > Cheers. > > > > > > > > On Wed, Jun 9, 2010 at 10:37 AM, Parveen Jain > wrote: > > > Hi, > > > In that case, Is it possible from VLC to generate two independent > streams > > > for audio and video without encapsulation.If yes , can you please help > me > > > with command ? > > > I explored mail archive of VLC for this, but found that VLC can not > do rtp > > > streaming without encapsulation.Is it really the case ? > > > Regards, > > > Parveen Jain > > > > > >> From: remi at remlab.net > > >> To: vlc-devel at videolan.org > > >> Subject: Re: [Videolan-devel] trying to write a sample video streaming > > >> application > > >> Date: Sat, 5 Jun 2010 16:08:14 +0300 > > >> CC: parveenjain at live.com > > >> > > >> Le vendredi 4 juin 2010 09:52:02 Parveen Jain, vous avez ?crit : > > >> > Hi All, > > >> > I am writing a SIP application , which will establish a video > session(by > > >> > sending SIP INVITE) with peer entity and once it gets confirmation > from > > >> > the peer(200 OK of SIP) the application will send out the video > stream > > >> > to > > >> > his designated RTP port. For this I am trying to explore the video > > >> > streaming capabilities of VLC.I know that VLC can do video streaming > > >> > using > > >> > RTP/UDP very easily(using command line).The same thing I am trying > to > > >> > achieve using its External APIs.I had tried to explore the APIs of > > >> > "libVlc-dev" but somehow got confused in its usage for creating such > > >> > video > > >> > streaming application.My current requirements are just to read from > a > > >> > video file and stream it using a very basic video codec(it can be > H248). > > >> > > >> There are is no well defined API to stream with LibVLC. You need to > set > > >> the > > >> "sout" options as you would do with the command line VLC. You should > add > > >> the > > >> option to the LibVLC media item provided to the LibVLC media player. > > >> > > >> -- > > >> R?mi Denis-Courmont > > >> http://www.remlab.net/ > > >> http://fi.linkedin.com/in/remidenis > > > > > > ________________________________ > > > The dark side of terrorists revealed in MSN Internal Security Get it > now. > > > _______________________________________________ > > > vlc-devel mailing list > > > To unsubscribe or modify your subscription options: > > > http://mailman.videolan.org/listinfo/vlc-devel > > > > > > > > _______________________________________________ > > vlc-devel mailing list > > To unsubscribe or modify your subscription options: > > http://mailman.videolan.org/listinfo/vlc-devel > > ------------------------------ > Manage your finance and manage money through MSN Money Special Drag n' > drop > -------------- next part -------------- An HTML attachment was scrubbed... URL: From pegasus at nerv.eu.org Mon Jun 14 15:57:45 2010 From: pegasus at nerv.eu.org (Jure =?UTF-8?B?UGXEjWFy?=) Date: Mon, 14 Jun 2010 15:57:45 +0200 Subject: [vlc-devel] [vlc-commits] Tag 1.1.0-rc3 : Jean-Baptiste Kempf : VLC 1.1.0-rc3 - 'The Luggage' In-Reply-To: <20100610232518.GA4271@videolan.org> References: <20100610230113.8B3CDF2827@albiero.videolan.org> <20100610232518.GA4271@videolan.org> Message-ID: <20100614155745.b35f0d38.pegasus@nerv.eu.org> On Fri, 11 Jun 2010 01:25:18 +0200 Jean-Baptiste Kempf wrote: > On Fri, Jun 11, 2010 at 01:01:13AM +0200, git at videolan.org wrote : > > [vlc/vlc-1.1] [branch: refs/tags/1.1.0-rc3] > ftp://ftp.videolan.org/pub/testing/vlc-1.1.0-rc3/vlc-1.1.0-rc3.tar.bz2 Doesn't complie for me: make[3]: Entering directory `/root/rpmbuild/BUILD/vlc-1.1.0-rc3/modules' GEN stamp-cache /root/rpmbuild/BUILD/vlc-1.1.0-rc3/bin/.libs/lt-vlc-cache-gen: error while loading shared libraries: libvlc.so.5: cannot open shared object file: No such file or directory libvlc.so.5 is in src/.libs/ but it doesn't get picked up by the vlc-cache-gen script. Host: rhel6 beta Any ideas? -- Jure Pe?ar http://jure.pecar.org From pegasus at nerv.eu.org Mon Jun 14 16:23:21 2010 From: pegasus at nerv.eu.org (Jure =?UTF-8?B?UGXEjWFy?=) Date: Mon, 14 Jun 2010 16:23:21 +0200 Subject: [vlc-devel] [vlc-commits] Tag 1.1.0-rc3 : Jean-Baptiste Kempf : VLC 1.1.0-rc3 - 'The Luggage' In-Reply-To: <20100614155745.b35f0d38.pegasus@nerv.eu.org> References: <20100610230113.8B3CDF2827@albiero.videolan.org> <20100610232518.GA4271@videolan.org> <20100614155745.b35f0d38.pegasus@nerv.eu.org> Message-ID: <20100614162321.c57f750b.pegasus@nerv.eu.org> On Mon, 14 Jun 2010 15:57:45 +0200 Jure Pe?ar wrote: > libvlc.so.5 is in src/.libs/ but it doesn't get picked up by the vlc-cache-gen script. False alarm - it turns out this was caused by some logic in rpm spec file I used that was messing with libtool. -- Jure Pe?ar http://jure.pecar.org From pankajdnapster at gmail.com Mon Jun 14 17:09:38 2010 From: pankajdnapster at gmail.com (Pankaj yadav) Date: Mon, 14 Jun 2010 20:39:38 +0530 Subject: [vlc-devel] Symbian Threading System for Review Message-ID: Hi, This is the Threading System I am going to use in Symbian Port and present it for your review. Attached Files are : =>FILE: vlc_symbian_fixups.h replaces all occurences of cancellation points(say acept()) with wrappers (say symbian_cancellable_wrapper_accept) using a #define macro #define accept symbian_cancellable_wraper_accept This File has to be Included in every Source file after all other Includes =>FILE: symbian_threads.cpp This file has all Thread Functions and Wrapper functions actually Implemented -- Pankaj Yadav Open Source Enthusiast -------------- next part -------------- A non-text attachment was scrubbed... Name: symbian_threads.cpp Type: text/x-c++src Size: 43120 bytes Desc: not available URL: -------------- next part -------------- A non-text attachment was scrubbed... Name: vlc_symbian_fixups.h Type: text/x-chdr Size: 2958 bytes Desc: not available URL: From pankajdnapster at gmail.com Mon Jun 14 17:09:38 2010 From: pankajdnapster at gmail.com (Pankaj yadav) Date: Mon, 14 Jun 2010 20:39:38 +0530 Subject: [vlc-devel] Symbian Threading System for Review Message-ID: Hi, This is the Threading System I am going to use in Symbian Port and present it for your review. Attached Files are : =>FILE: vlc_symbian_fixups.h replaces all occurences of cancellation points(say acept()) with wrappers (say symbian_cancellable_wrapper_accept) using a #define macro #define accept symbian_cancellable_wraper_accept This File has to be Included in every Source file after all other Includes =>FILE: symbian_threads.cpp This file has all Thread Functions and Wrapper functions actually Implemented -- Pankaj Yadav Open Source Enthusiast -------------- next part -------------- A non-text attachment was scrubbed... Name: symbian_threads.cpp Type: text/x-c++src Size: 43120 bytes Desc: not available URL: -------------- next part -------------- A non-text attachment was scrubbed... Name: vlc_symbian_fixups.h Type: text/x-chdr Size: 2958 bytes Desc: not available URL: From pankajdnapster at gmail.com Mon Jun 14 17:13:16 2010 From: pankajdnapster at gmail.com (Pankaj yadav) Date: Mon, 14 Jun 2010 20:43:16 +0530 Subject: [vlc-devel] Introduction VLC Player For Symbian Message-ID: Hi Everyone, I am Pankaj Yadav, a Senior Undergraduate at Department of Mining Engineering ,BHU. My Project is to Port VLC Player to Symbian Operating System which is a popular Open Source Platform for Mobile Devices. Recently I have finished Porting Core ,which involved writing a Cancellable Threading System, implementing wrapper function for Cancellation points and incorporating them in VLC code,An audio output module for Symbian using Native Symbian APIs in Symbian C++,porting some LIBC routines namely Binary Tree search, writing a Symbian Project, deciding appropriate compiler Directives. I have been working on this project for more than an Year.In the past I have ported 0.7* , 0.8* and 0.9.9a successfully. As Mobile Ui is a parallel GSoC project so my task reduces to command line operations only. Next Step will be to introduce modules necessary for MP3 playback.Then I will move on for some video playback. -- Pankaj Yadav Open Source Enthusiast From fcvlcdev at free.fr Mon Jun 14 18:36:51 2010 From: fcvlcdev at free.fr (Francois Cartegnie) Date: Mon, 14 Jun 2010 18:36:51 +0200 Subject: [vlc-devel] [PATCH] fix unsupported shortcut syntax Message-ID: <1276533416-24455-1-git-send-email-fcvlcdev@free.fr> --- src/input/es_out.c | 3 ++- 1 files changed, 2 insertions(+), 1 deletions(-) diff --git a/src/input/es_out.c b/src/input/es_out.c index 1468ba4..afc8c47 100644 --- a/src/input/es_out.c +++ b/src/input/es_out.c @@ -2869,7 +2869,8 @@ static void EsOutUpdateInfo( es_out_t *out, es_out_id_t *es, const es_format_t * const char *psz_codec_description = vlc_fourcc_GetDescription( p_fmt_es->i_cat, p_fmt_es->i_codec ); - const vlc_fourcc_t i_codec_fourcc = p_fmt_es->i_original_fourcc ?: p_fmt_es->i_codec; + const vlc_fourcc_t i_codec_fourcc = ( p_fmt_es->i_original_fourcc )? + p_fmt_es->i_original_fourcc : p_fmt_es->i_codec; if( psz_codec_description ) info_category_AddInfo( p_cat, _("Codec"), "%s (%.4s)", psz_codec_description, (char*)&i_codec_fourcc ); -- 1.5.6.5 From fcvlcdev at free.fr Mon Jun 14 18:36:52 2010 From: fcvlcdev at free.fr (Francois Cartegnie) Date: Mon, 14 Jun 2010 18:36:52 +0200 Subject: [vlc-devel] [PATCH] vlc_GetCPUCount: add Solaris detection In-Reply-To: <1276533416-24455-1-git-send-email-fcvlcdev@free.fr> References: <1276533416-24455-1-git-send-email-fcvlcdev@free.fr> Message-ID: <1276533416-24455-2-git-send-email-fcvlcdev@free.fr> --- src/misc/cpu.c | 27 +++++++++++++++++++++++++++ 1 files changed, 27 insertions(+), 0 deletions(-) diff --git a/src/misc/cpu.c b/src/misc/cpu.c index 83b9560..71aed9d 100644 --- a/src/misc/cpu.c +++ b/src/misc/cpu.c @@ -49,6 +49,13 @@ #include #endif +#if defined(__SunOS) +#include +#include +#include +#include +#endif + #if defined( __i386__ ) || defined( __x86_64__ ) || defined( __powerpc__ ) \ || defined( __ppc__ ) || defined( __ppc64__ ) || defined( __powerpc64__ ) # ifndef WIN32 @@ -351,6 +358,26 @@ unsigned vlc_GetCPUCount(void) if (sysctlbyname("hw.ncpu", &count, &size, NULL, 0)) return 1; /* Failure */ return count; +#elif defined(__SunOS) + unsigned count = 0; + int type; + u_int numcpus; + processorid_t *cpulist; + processor_info_t cpuinfo; + cpulist = malloc(sizeof(processorid_t) * sysconf(_SC_NPROCESSORS_MAX)); + if (!cpulist) return 1; + if (pset_info(PS_MYID, &type, &numcpus, cpulist)==0) + { + for (u_int i = 0; i < numcpus; i++) + { + if (!processor_info(cpulist[i], &cpuinfo)) + count += (cpuinfo.pi_state == P_ONLINE)?1:0; + } + } else { + count = sysconf(_SC_NPROCESSORS_ONLN); + } + free(cpulist); + return (count>0)?count:1; #else # warning "vlc_GetCPUCount is not implemented for your platform" return 1; -- 1.5.6.5 From fcvlcdev at free.fr Mon Jun 14 18:36:53 2010 From: fcvlcdev at free.fr (Francois Cartegnie) Date: Mon, 14 Jun 2010 18:36:53 +0200 Subject: [vlc-devel] [PATCH] Ambiguity between std::log(double) and std::log(float) In-Reply-To: <1276533416-24455-1-git-send-email-fcvlcdev@free.fr> References: <1276533416-24455-1-git-send-email-fcvlcdev@free.fr> Message-ID: <1276533416-24455-3-git-send-email-fcvlcdev@free.fr> --- modules/gui/qt4/components/interface_widgets.cpp | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/modules/gui/qt4/components/interface_widgets.cpp b/modules/gui/qt4/components/interface_widgets.cpp index b8ed7c5..c130c69 100644 --- a/modules/gui/qt4/components/interface_widgets.cpp +++ b/modules/gui/qt4/components/interface_widgets.cpp @@ -426,7 +426,7 @@ void SpeedControlWidget::updateControls( float rate ) return; } - double value = 17 * log( rate ) / log( 2 ); + double value = 17 * log( rate ) / log( 2. ); int sliderValue = (int) ( ( value > 0 ) ? value + .5 : value - .5 ); if( sliderValue < speedSlider->minimum() ) -- 1.5.6.5 From fcvlcdev at free.fr Mon Jun 14 18:36:54 2010 From: fcvlcdev at free.fr (Francois Cartegnie) Date: Mon, 14 Jun 2010 18:36:54 +0200 Subject: [vlc-devel] [PATCH] restrict from applying gcc only flags In-Reply-To: <1276533416-24455-1-git-send-email-fcvlcdev@free.fr> References: <1276533416-24455-1-git-send-email-fcvlcdev@free.fr> Message-ID: <1276533416-24455-4-git-send-email-fcvlcdev@free.fr> testings of gcc's optimization variables against other compilers can't be trusted as they might just propagate them to linker, without throwing an error to autoconf. In the suncc case, the linker will fail later. --- configure.ac | 86 +++++++++++++++++++++++++++++++++++---------------------- 1 files changed, 53 insertions(+), 33 deletions(-) diff --git a/configure.ac b/configure.ac index 37ed6d1..1894cf1 100644 --- a/configure.ac +++ b/configure.ac @@ -983,6 +983,18 @@ CFLAGS="${CFLAGS_save}" RDC_PROG_CC_WFLAGS([all extra sign-compare undef pointer-arith bad-function-cast write-strings missing-prototypes volatile-register-var error-implicit-function-declaration]) RDC_PROG_CC_FLAGS([-pipe]) +dnl Set up version & compiler variables for various hacks +if test "$GCC" = "yes"; then + AC_DEFINE_UNQUOTED(VLC_COMPILER, "`$CC -v 2>&1 | tail -n 1`", [compiler]) +else + AC_CHECK_DECL([__SUNPRO_C], [SUNCC="yes"], [SUNCC="no"]) + if test "$SUNCC" = "yes"; then + AC_DEFINE_UNQUOTED(VLC_COMPILER, "`$CC -V 2>&1 | head -n 1`", [compiler]) + else + AC_DEFINE_UNQUOTED(VLC_COMPILER, "unknown", [compiler]) + fi +fi + dnl Check for various optimization flags AC_CACHE_CHECK([if \$CC accepts -Os], [ac_cv_c_os], @@ -1043,17 +1055,21 @@ if test "${ac_cv_c_o0}" != "no"; then fi dnl Check for -ffast-math -AC_CACHE_CHECK([if \$CC accepts -ffast-math], - [ac_cv_c_fast_math], - [CFLAGS="${CFLAGS_save} -ffast-math" - AC_TRY_COMPILE([],,ac_cv_c_fast_math=yes, ac_cv_c_fast_math=no)]) -if test "${ac_cv_c_fast_math}" != "no"; then - CFLAGS_OPTIM_SPEED="${CFLAGS_OPTIM_SPEED} -ffast-math" +dnl We need to sanitize SunCC options as unknown ones are passed to ld +if test "$SUNCC" != "yes" +then + AC_CACHE_CHECK([if \$CC accepts -ffast-math], + [ac_cv_c_fast_math], + [CFLAGS="${CFLAGS_save} -ffast-math" + AC_TRY_COMPILE([],,ac_cv_c_fast_math=yes, ac_cv_c_fast_math=no)]) + if test "${ac_cv_c_fast_math}" != "no"; then + CFLAGS_OPTIM_SPEED="${CFLAGS_OPTIM_SPEED} -ffast-math" + fi fi dnl Check for -funroll-loops dnl Disabled on BeOS because BeOS' gcc is buggy and may crash with it -if test "${SYS}" != "beos" +if test "${SYS}" != "beos" -a "$SUNCC" != "yes" then AC_CACHE_CHECK([if \$CC accepts -funroll-loops], [ac_cv_c_unroll_loops], @@ -1065,17 +1081,20 @@ then fi dnl Check for -fomit-frame-pointer -AC_CACHE_CHECK([if \$CC accepts -fomit-frame-pointer], - [ac_cv_c_omit_frame_pointer], - [CFLAGS="${CFLAGS_save} -fomit-frame-pointer" - AC_TRY_COMPILE([],,ac_cv_c_omit_frame_pointer=yes, ac_cv_c_omit_frame_pointer=no)]) -if test "${ac_cv_c_omit_frame_pointer}" != "no"; then - if test "${SYS}" != "darwin"; then - CFLAGS_OPTIM_NODEBUG="${CFLAGS_OPTIM_NODEBUG} -fomit-frame-pointer" - else - dnl On darwin we explicitely disable it. - CFLAGS_OPTIM_NODEBUG="${CFLAGS_OPTIM_NODEBUG} -fno-omit-frame-pointer" - fi +if test "$SUNCC" != "yes" +then + AC_CACHE_CHECK([if \$CC accepts -fomit-frame-pointer], + [ac_cv_c_omit_frame_pointer], + [CFLAGS="${CFLAGS_save} -fomit-frame-pointer" + AC_TRY_COMPILE([],,ac_cv_c_omit_frame_pointer=yes, ac_cv_c_omit_frame_pointer=no)]) + if test "${ac_cv_c_omit_frame_pointer}" != "no"; then + if test "${SYS}" != "darwin"; then + CFLAGS_OPTIM_NODEBUG="${CFLAGS_OPTIM_NODEBUG} -fomit-frame-pointer" + else + dnl On darwin we explicitely disable it. + CFLAGS_OPTIM_NODEBUG="${CFLAGS_OPTIM_NODEBUG} -fno-omit-frame-pointer" + fi + fi fi dnl Check for Darwin plugin linking flags @@ -1494,20 +1513,22 @@ dnl AC_ARG_WITH(tuning, [ --with-tuning=ARCH enable special tuning for an architecture (default Pentium 2 on IA-32 and G4 on PPC)]) -if test -n "${with_tuning}"; then - if test "${with_tuning}" != "no"; then - CFLAGS_TUNING="-mtune=${with_tuning}" - fi -else - if test "${SYS}" = "darwin" -a "${host_cpu}" != "powerpc"; then - CFLAGS_TUNING="-march=prescott -mtune=generic" - elif test "${host_cpu}" = "i686" -o "${host_cpu}" = "i586" -o "${host_cpu}" = "i486" -o "${host_cpu}" = "i386"; then - CFLAGS_TUNING="-mtune=pentium2" - elif test "${host_cpu}" = "x86_64"; then - CFLAGS_TUNING="-mtune=athlon64" - elif test "${host_cpu}" = "powerpc"; then - CFLAGS_TUNING="-mtune=G4"; - fi +if test "$SUNCC" != "yes"; then + if test -n "${with_tuning}"; then + if test "${with_tuning}" != "no"; then + CFLAGS_TUNING="-mtune=${with_tuning}" + fi + else + if test "${SYS}" = "darwin" -a "${host_cpu}" != "powerpc"; then + CFLAGS_TUNING="-march=prescott -mtune=generic" + elif test "${host_cpu}" = "i686" -o "${host_cpu}" = "i586" -o "${host_cpu}" = "i486" -o "${host_cpu}" = "i386"; then + CFLAGS_TUNING="-mtune=pentium2" + elif test "${host_cpu}" = "x86_64"; then + CFLAGS_TUNING="-mtune=athlon64" + elif test "${host_cpu}" = "powerpc"; then + CFLAGS_TUNING="-mtune=G4"; + fi + fi fi dnl NOTE: this can't be cached cleanly @@ -4650,7 +4671,6 @@ AC_SUBST(VERSION_EXTRA) AC_SUBST(COPYRIGHT_YEARS) AC_DEFINE_UNQUOTED(VLC_COMPILE_BY, "`whoami`", [user who ran configure]) AC_DEFINE_UNQUOTED(VLC_COMPILE_HOST, "`hostname -f 2>/dev/null || hostname`", [host which ran configure]) -AC_DEFINE_UNQUOTED(VLC_COMPILER, "`$CC -v 2>&1 | tail -n 1`", [compiler]) dnl Win32 need s a numerical version_extra. case $( echo ${VERSION_EXTRA}|wc -m ) in "1") VERSION_EXTRA_RC="0";; -- 1.5.6.5 From fcvlcdev at free.fr Mon Jun 14 18:36:55 2010 From: fcvlcdev at free.fr (Francois Cartegnie) Date: Mon, 14 Jun 2010 18:36:55 +0200 Subject: [vlc-devel] [PATCH] Qt4 module requires -lm (pow,log) on solaris In-Reply-To: <1276533416-24455-1-git-send-email-fcvlcdev@free.fr> References: <1276533416-24455-1-git-send-email-fcvlcdev@free.fr> Message-ID: <1276533416-24455-5-git-send-email-fcvlcdev@free.fr> --- configure.ac | 1 + 1 files changed, 1 insertions(+), 0 deletions(-) diff --git a/configure.ac b/configure.ac index 1894cf1..7bd9fa8 100644 --- a/configure.ac +++ b/configure.ac @@ -3930,6 +3930,7 @@ AS_IF([test "${enable_qt4}" != "no"], [ ALIASES="${ALIASES} qvlc" AS_IF([test "${SYS}" != "mingw32" -a "${SYS}" != "mingwce" -a "${SYS}" != "darwin"], [ VLC_ADD_LIBS([qt4],[$QT4_LIBS ${X_LIBS} ${X_PRE_LIBS} -lX11]) + AS_IF([test "${SYS}" = "solaris"], [VLC_ADD_LIBS([qt4],[-lm])]) need_xid_provider="no" VLC_ADD_CXXFLAGS([qt4],[$QT4_CFLAGS ${X_CFLAGS}]) ], [ -- 1.5.6.5 From fcvlcdev at free.fr Mon Jun 14 18:36:56 2010 From: fcvlcdev at free.fr (Francois Cartegnie) Date: Mon, 14 Jun 2010 18:36:56 +0200 Subject: [vlc-devel] [PATCH] sunstudio fix for unsupported sizeof({}) In-Reply-To: <1276533416-24455-1-git-send-email-fcvlcdev@free.fr> References: <1276533416-24455-1-git-send-email-fcvlcdev@free.fr> Message-ID: <1276533416-24455-6-git-send-email-fcvlcdev@free.fr> --- include/vlc_plugin.h | 9 ++++++--- 1 files changed, 6 insertions(+), 3 deletions(-) diff --git a/include/vlc_plugin.h b/include/vlc_plugin.h index c1a150e..2f7f45c 100644 --- a/include/vlc_plugin.h +++ b/include/vlc_plugin.h @@ -196,9 +196,12 @@ enum vlc_module_properties goto error; #define add_shortcut( ... ) \ - if (vlc_module_set (p_submodule, VLC_MODULE_SHORTCUT, \ - sizeof((const char*[]){__VA_ARGS__})/sizeof(const char*), __VA_ARGS__)) \ - goto error; + do {\ + const char* foo [] = {__VA_ARGS__};\ + if ( vlc_module_set (p_submodule, VLC_MODULE_SHORTCUT, \ + sizeof(foo)/sizeof(const char*), __VA_ARGS__)) \ + goto error;\ + } while(0); #define set_shortname( shortname ) \ if (vlc_module_set (p_submodule, VLC_MODULE_SHORTNAME, \ -- 1.5.6.5 From remi at remlab.net Mon Jun 14 19:04:24 2010 From: remi at remlab.net (=?UTF-8?Q?R=C3=A9mi_Denis-Courmont?=) Date: Mon, 14 Jun 2010 19:04:24 +0200 Subject: [vlc-devel] [PATCH] restrict from applying gcc only flags In-Reply-To: <1276533416-24455-4-git-send-email-fcvlcdev@free.fr> References: <1276533416-24455-1-git-send-email-fcvlcdev@free.fr> <1276533416-24455-4-git-send-email-fcvlcdev@free.fr> Message-ID: <0ce012cc0ff3dfab580bd8eb4b3e5620@chewa.net> On Mon, 14 Jun 2010 18:36:54 +0200, Francois Cartegnie wrote: > testings of gcc's optimization variables against other compilers can't be > trusted as they might just propagate them to linker, without throwing > an error to autoconf. In the suncc case, the linker will fail later. Beuarh. Can't you simply use AC_TRY_LINK instead of AC_TRY_COMPILE? -- R?mi Denis-Courmont http://www.remlab.net http://fi.linkedin.com/in/remidenis From remi at remlab.net Mon Jun 14 19:05:25 2010 From: remi at remlab.net (=?UTF-8?Q?R=C3=A9mi_Denis-Courmont?=) Date: Mon, 14 Jun 2010 19:05:25 +0200 Subject: [vlc-devel] [PATCH] Qt4 module requires -lm (pow, log) on solaris In-Reply-To: <1276533416-24455-5-git-send-email-fcvlcdev@free.fr> References: <1276533416-24455-1-git-send-email-fcvlcdev@free.fr> <1276533416-24455-5-git-send-email-fcvlcdev@free.fr> Message-ID: <5bd5244db948ccb823de9500196953d4@chewa.net> On Mon, 14 Jun 2010 18:36:55 +0200, Francois Cartegnie wrote: > --- > configure.ac | 1 + > 1 files changed, 1 insertions(+), 0 deletions(-) > > diff --git a/configure.ac b/configure.ac > index 1894cf1..7bd9fa8 100644 > --- a/configure.ac > +++ b/configure.ac > @@ -3930,6 +3930,7 @@ AS_IF([test "${enable_qt4}" != "no"], [ > ALIASES="${ALIASES} qvlc" > AS_IF([test "${SYS}" != "mingw32" -a "${SYS}" != "mingwce" -a > "${SYS}" != "darwin"], [ > VLC_ADD_LIBS([qt4],[$QT4_LIBS ${X_LIBS} ${X_PRE_LIBS} -lX11]) > + AS_IF([test "${SYS}" = "solaris"], [VLC_ADD_LIBS([qt4],[-lm])]) > need_xid_provider="no" > VLC_ADD_CXXFLAGS([qt4],[$QT4_CFLAGS ${X_CFLAGS}]) > ], [ There is already a check pow() somewhere. Just add qt4 in the list. -- R?mi Denis-Courmont http://www.remlab.net http://fi.linkedin.com/in/remidenis From remi at remlab.net Mon Jun 14 19:07:00 2010 From: remi at remlab.net (=?UTF-8?Q?R=C3=A9mi_Denis-Courmont?=) Date: Mon, 14 Jun 2010 19:07:00 +0200 Subject: [vlc-devel] [PATCH] sunstudio fix for unsupported sizeof({}) In-Reply-To: <1276533416-24455-6-git-send-email-fcvlcdev@free.fr> References: <1276533416-24455-1-git-send-email-fcvlcdev@free.fr> <1276533416-24455-6-git-send-email-fcvlcdev@free.fr> Message-ID: On Mon, 14 Jun 2010 18:36:56 +0200, Francois Cartegnie wrote: > diff --git a/include/vlc_plugin.h b/include/vlc_plugin.h > index c1a150e..2f7f45c 100644 > --- a/include/vlc_plugin.h > +++ b/include/vlc_plugin.h > @@ -196,9 +196,12 @@ enum vlc_module_properties > goto error; > > #define add_shortcut( ... ) \ > - if (vlc_module_set (p_submodule, VLC_MODULE_SHORTCUT, \ > - sizeof((const char*[]){__VA_ARGS__})/sizeof(const char*), > __VA_ARGS__)) \ > - goto error; > + do {\ > + const char* foo [] = {__VA_ARGS__};\ > + if ( vlc_module_set (p_submodule, VLC_MODULE_SHORTCUT, \ > + sizeof(foo)/sizeof(const char*), __VA_ARGS__)) \ > + goto error;\ > + } while(0); In my opinion, this is wrong and so is the original code. __VA_ARGS__ should be expanded only once. And then, this particular patch seems to lack one 'const'. -- R?mi Denis-Courmont http://www.remlab.net http://fi.linkedin.com/in/remidenis From fcvlcdev at free.fr Mon Jun 14 19:41:46 2010 From: fcvlcdev at free.fr (Francois Cartegnie) Date: Mon, 14 Jun 2010 19:41:46 +0200 Subject: [vlc-devel] [PATCH] restrict from applying gcc only flags In-Reply-To: <0ce012cc0ff3dfab580bd8eb4b3e5620@chewa.net> References: <1276533416-24455-1-git-send-email-fcvlcdev@free.fr> <1276533416-24455-4-git-send-email-fcvlcdev@free.fr> <0ce012cc0ff3dfab580bd8eb4b3e5620@chewa.net> Message-ID: <201006141941.46833.fcvlcdev@free.fr> Le lundi 14 juin 2010, R?mi Denis-Courmont a ?crit : > Beuarh. > > Can't you simply use AC_TRY_LINK instead of AC_TRY_COMPILE? I don't use TRY_COMPILE. Francois From kwizart at gmail.com Mon Jun 14 20:11:49 2010 From: kwizart at gmail.com (Nicolas Chauvet) Date: Mon, 14 Jun 2010 20:11:49 +0200 Subject: [vlc-devel] [vlc-commits] Tag 1.1.0-rc3 : Jean-Baptiste Kempf : VLC 1.1.0-rc3 - 'The Luggage' In-Reply-To: <20100614162321.c57f750b.pegasus@nerv.eu.org> References: <20100610230113.8B3CDF2827@albiero.videolan.org> <20100610232518.GA4271@videolan.org> <20100614155745.b35f0d38.pegasus@nerv.eu.org> <20100614162321.c57f750b.pegasus@nerv.eu.org> Message-ID: 2010/6/14 Jure Pe?ar : > On Mon, 14 Jun 2010 15:57:45 +0200 > Jure Pe?ar wrote: > >> libvlc.so.5 is in src/.libs/ but it doesn't get picked up by the vlc-cache-gen script. > > False alarm - it turns out this was caused by some logic in rpm spec file I used that was messing with libtool. Then you probably have rpath issue with your binaries. From remi at remlab.net Mon Jun 14 23:19:39 2010 From: remi at remlab.net (=?UTF-8?Q?R=C3=A9mi_Denis-Courmont?=) Date: Mon, 14 Jun 2010 23:19:39 +0200 Subject: [vlc-devel] [vlc-commits] commit: Drop the icons resolution from its name when installing ( Christophe Mutricy ) In-Reply-To: <20100614205452.BCF2CF51C7@albiero.videolan.org> References: <20100614205452.BCF2CF51C7@albiero.videolan.org> Message-ID: On Mon, 14 Jun 2010 22:54:52 +0200 (CEST), git at videolan.org wrote: > vlc | branch: master | Christophe Mutricy | Mon Jun > 14 21:51:16 2010 +0100| [c5329659d46c9e6111dbb3c27b7339058438d01e] | > committer: Christophe Mutricy > > Drop the icons resolution from its name when installing Can't we move the icons in different git directories instead of these acrobatics? -- R?mi Denis-Courmont http://www.remlab.net http://fi.linkedin.com/in/remidenis From remi at remlab.net Mon Jun 14 23:37:55 2010 From: remi at remlab.net (=?UTF-8?Q?R=C3=A9mi_Denis-Courmont?=) Date: Mon, 14 Jun 2010 23:37:55 +0200 Subject: [vlc-devel] Symbian Threading System for Review In-Reply-To: References: Message-ID: <485e71610aca4ae5eb2a97b047d03711@chewa.net> On Mon, 14 Jun 2010 20:39:38 +0530, Pankaj yadav wrote: > This is the Threading System I am going to use in Symbian Port and > present it for your review. > > Attached Files are : > > =>FILE: vlc_symbian_fixups.h replaces all occurences of cancellation > points(say acept()) with wrappers IIRC, VLC currently expects a cancellation point in the following leaf functions: - msleep and mdate, - vlc_cond_wait and vlc_cond_timedwait, - vlc_join, - poll or vlc_poll, - vlc_testcancel. All of those, except poll() are LibVLC functions. So I think you don't really need the #define hacks. You can just do the cancellation support directly in the function, no? For poll(), we already have wrapper implementation in src/network/poll.c. Look for HAVE_MAEMO to see how you can define poll() to vlc_poll() and override the implementation to handle cancellation as you need. > =>FILE: symbian_threads.cpp This file has all Thread Functions and > Wrapper functions actually Implemented Please _indent_ your code. It's a pain to review as is. Best regards, -- R?mi Denis-Courmont http://www.remlab.net http://fi.linkedin.com/in/remidenis From xtophe at chewa.net Tue Jun 15 00:35:38 2010 From: xtophe at chewa.net (Christophe Mutricy) Date: Tue, 15 Jun 2010 00:35:38 +0200 Subject: [vlc-devel] [vlc-commits] commit: Drop the icons resolution from its name when installing ( Christophe Mutricy ) In-Reply-To: References: <20100614205452.BCF2CF51C7@albiero.videolan.org> Message-ID: <20100614223538.GD30509@chewa.net> On Mon, Jun 14, 10 at 23:19 +0200, R?mi Denis-Courmont wrote: > > Can't we move the icons in different git directories instead of these > acrobatics? > I blame my xkcd regexp t-shirt -- Xtophe From remi at remlab.net Tue Jun 15 01:16:58 2010 From: remi at remlab.net (=?UTF-8?Q?R=C3=A9mi_Denis-Courmont?=) Date: Tue, 15 Jun 2010 01:16:58 +0200 Subject: [vlc-devel] [vlc-commits] commit: Win32: fix file opening from context menu (Jean-Baptiste Kempf ) In-Reply-To: <20100614220408.E729AF524B@albiero.videolan.org> References: <20100614220408.E729AF524B@albiero.videolan.org> Message-ID: <1d3cad03ee66a84d85e203a0f9583a79@chewa.net> On Tue, 15 Jun 2010 00:04:08 +0200 (CEST), git at videolan.org wrote: > vlc | branch: master | Jean-Baptiste Kempf | Tue Jun 15 > 00:02:18 2010 +0200| [fe0bf180e4ea6412d5cd07b613605daf8eca1971] | > committer: Jean-Baptiste Kempf > > Win32: fix file opening from context menu > > Also when double-clicking. > This fixes #3604 Don't you need to free() the string from make_URI() somewhere? -- R?mi Denis-Courmont http://www.remlab.net http://fi.linkedin.com/in/remidenis From parveenjain at live.com Tue Jun 15 08:18:43 2010 From: parveenjain at live.com (Parveen Jain) Date: Tue, 15 Jun 2010 11:48:43 +0530 Subject: [vlc-devel] [Videolan-devel] trying to write a sample video streaming application In-Reply-To: References: , <201006051608.14656.remi@remlab.net>, , Message-ID: Thanks Remi, I could explore the options of libVLC media player as mentioned by you.My main problem is that I have an encapsulated "video+audio" file in an "3GP" format.Video part is encoded in H.263 format and audio part is in AAC format.I am trying to stream these two parts in elementary H263 and PCMU format.Though I could stream these two streams(audio part after trasncoding into PCMU and video part as such) one by one in these formats.But I am not able to stream these two streams simultaneously in H263 and PCMU format. Is there any option avilable in VLC to do this ? In summary, I am trying to stream two elementary streams simultaneously on two different ports of a remote machine after getting these two streams from a specific file format.Is it possible to achieve this using VLC sout option? Regards,Parveen Jain > Date: Wed, 9 Jun 2010 12:04:15 +0200 > From: googuy at gmail.com > To: vlc-devel at videolan.org > Subject: Re: [vlc-devel] [Videolan-devel] trying to write a sample video streaming application > > The RTP stream out module do that unless you specify a mux parameter. > Reference: > http://wiki.videolan.org/Documentation:Streaming_HowTo/Advanced_Streaming_Using_the_Command_Line#mux_2 > > You can also use the es stream output > > A lot of examples use mux=ts because it is easier to set the receiver player. > > Cheers. > > > > On Wed, Jun 9, 2010 at 10:37 AM, Parveen Jain wrote: > > Hi, > > In that case, Is it possible from VLC to generate two independent streams > > for audio and video without encapsulation.If yes , can you please help me > > with command ? > > I explored mail archive of VLC for this, but found that VLC can not do rtp > > streaming without encapsulation.Is it really the case ? > > Regards, > > Parveen Jain > > > >> From: remi at remlab.net > >> To: vlc-devel at videolan.org > >> Subject: Re: [Videolan-devel] trying to write a sample video streaming > >> application > >> Date: Sat, 5 Jun 2010 16:08:14 +0300 > >> CC: parveenjain at live.com > >> > >> Le vendredi 4 juin 2010 09:52:02 Parveen Jain, vous avez ?crit : > >> > Hi All, > >> > I am writing a SIP application , which will establish a video session(by > >> > sending SIP INVITE) with peer entity and once it gets confirmation from > >> > the peer(200 OK of SIP) the application will send out the video stream > >> > to > >> > his designated RTP port. For this I am trying to explore the video > >> > streaming capabilities of VLC.I know that VLC can do video streaming > >> > using > >> > RTP/UDP very easily(using command line).The same thing I am trying to > >> > achieve using its External APIs.I had tried to explore the APIs of > >> > "libVlc-dev" but somehow got confused in its usage for creating such > >> > video > >> > streaming application.My current requirements are just to read from a > >> > video file and stream it using a very basic video codec(it can be H248). > >> > >> There are is no well defined API to stream with LibVLC. You need to set > >> the > >> "sout" options as you would do with the command line VLC. You should add > >> the > >> option to the LibVLC media item provided to the LibVLC media player. > >> > >> -- > >> R?mi Denis-Courmont > >> http://www.remlab.net/ > >> http://fi.linkedin.com/in/remidenis > > > > ________________________________ > > The dark side of terrorists revealed in MSN Internal Security Get it now. > > _______________________________________________ > > vlc-devel mailing list > > To unsubscribe or modify your subscription options: > > http://mailman.videolan.org/listinfo/vlc-devel > > > > > _______________________________________________ > vlc-devel mailing list > To unsubscribe or modify your subscription options: > http://mailman.videolan.org/listinfo/vlc-devel _________________________________________________________________ Bollywood, beauties and the latest flicks on MSN entertainment http://entertainment.in.msn.com/ -------------- next part -------------- An HTML attachment was scrubbed... URL: From venu.vemulapally at gmail.com Tue Jun 15 12:41:23 2010 From: venu.vemulapally at gmail.com (Venu Vemulapally) Date: Tue, 15 Jun 2010 16:11:23 +0530 Subject: [vlc-devel] Issues with HD content playback Message-ID: Hi All, We have been using vlc-1.0.6 on Ubuntu Linux but when we are try to playback the HD content of 12Mbps bitrate through IGMP multicast url then my system is logging out. Here I have mentioned the my system hardware configuration . *chipset :* Intel Corporation Mobile 945GM/GMS/GME, 943/940GML Express Integrated Graphics Controller *processor:* Single core Intel Atom N270 1.60Ghz *RAM :* 1GB *OS :* Ubuntu 9.04 Can any one please suggest us is this because of weak hardware conf or VLC issue ? Thanks, Venu -------------- next part -------------- An HTML attachment was scrubbed... URL: From kaarlo.raiha at gmail.com Tue Jun 15 12:59:46 2010 From: kaarlo.raiha at gmail.com (=?ISO-8859-1?B?S2FhcmxvIFLkaWjk?=) Date: Tue, 15 Jun 2010 13:59:46 +0300 Subject: [vlc-devel] Issues with HD content playback In-Reply-To: References: Message-ID: What kind of HD content you mean? MPEG-2, VC-1, AVC/H.264 or something else? I would guess ATOM doesn't have enough CPU resources to decode 12 Mbps AVC/H.264 realtime and since AFAIK VLC doesn't support Intel GPU decoding on Linux, you don't have really that many options. 2010/6/15 Venu Vemulapally > Hi All, > > We have been using vlc-1.0.6 on Ubuntu Linux but when we are try to > playback the HD content of 12Mbps bitrate through IGMP multicast url then > my system is logging out. Here I have mentioned the my system hardware > configuration . > > *chipset :* Intel Corporation Mobile 945GM/GMS/GME, 943/940GML Express > Integrated Graphics Controller > *processor:* Single core Intel Atom N270 1.60Ghz > *RAM :* 1GB > *OS :* Ubuntu 9.04 > > Can any one please suggest us is this because of weak hardware conf or VLC > issue ? > > > Thanks, > Venu > > _______________________________________________ > vlc-devel mailing list > To unsubscribe or modify your subscription options: > http://mailman.videolan.org/listinfo/vlc-devel > > -------------- next part -------------- An HTML attachment was scrubbed... URL: From bjorn at haxx.se Tue Jun 15 14:47:22 2010 From: bjorn at haxx.se (bjorn at haxx.se) Date: Tue, 15 Jun 2010 14:47:22 +0200 Subject: [vlc-devel] [PATCH] dvbsub.c : Don't fill region if page_state == 0 In-Reply-To: <20100608183713.GC8419@giant> References: <20100608183713.GC8419@giant> Message-ID: <1276606042-25884-1-git-send-email-bjorn@haxx.se> From: Bj?rn Stenberg My interpretation of ETSI EN 300 743 is that the region_fill_flag of a region composition segment should not cause the region to be filled when the containing page composition segment has its' page_state variable set to 0 (page update). --- modules/codec/dvbsub.c | 9 +++++++-- 1 files changed, 7 insertions(+), 2 deletions(-) diff --git a/modules/codec/dvbsub.c b/modules/codec/dvbsub.c index fb7619c..a434003 100644 --- a/modules/codec/dvbsub.c +++ b/modules/codec/dvbsub.c @@ -840,7 +840,8 @@ static void decode_region_composition( decoder_t *p_dec, bs_t *s ) int i_segment_length, i_processed_length, i_id, i_version; int i_width, i_height, i_level_comp, i_depth, i_clut; int i_8_bg, i_4_bg, i_2_bg; - bool b_fill; + bool b_region_fill, b_fill = false; + dvbsub_page_t *p_page = p_sys->p_page; i_segment_length = bs_read( s, 16 ); i_id = bs_read( s, 8 ); @@ -877,7 +878,7 @@ static void decode_region_composition( decoder_t *p_dec, bs_t *s ) /* Region attributes */ p_region->i_id = i_id; p_region->i_version = i_version; - b_fill = bs_read( s, 1 ); + b_region_fill = bs_read( s, 1 ); bs_skip( s, 3 ); /* Reserved */ i_width = bs_read( s, 16 ); @@ -917,6 +918,10 @@ static void decode_region_composition( decoder_t *p_dec, bs_t *s ) p_region->i_depth = 0; b_fill = true; } + else + if (b_region_fill && p_page->i_state != 0) + b_fill = true; + if( p_region->i_depth && ( ( p_region->i_depth != i_depth ) || ( p_region->i_level_comp != i_level_comp ) || -- 1.7.1 From pdherbemont at gmail.com Wed Jun 16 00:58:15 2010 From: pdherbemont at gmail.com (Pierre d'Herbemont) Date: Wed, 16 Jun 2010 00:58:15 +0200 Subject: [vlc-devel] Not able to build current git on Mac OS X 10.6 In-Reply-To: <201006072335.57207.remi@remlab.net> References: <6abd106f8ec2a13549cabbe5536ab78f@chewa.net> <1A6A99B0-1846-4D16-9C62-4810D91C0578@xant.net> <201006072335.57207.remi@remlab.net> Message-ID: <1D41D1D2-85C3-4FF1-94C5-E40FA44661DB@gmail.com> On Jun 7, 2010, at 10:35 PM, R?mi Denis-Courmont wrote: > Le lundi 7 juin 2010 23:10:17 Andrea Guzzo, vous avez ?crit : >> I've been trying to build current trunk on my 10.6 as well ... and I had >> exactly the same problem. I gave a look at the code and, as far as I see >> ,the problem is that most of 'struct vout_thread_t' has been made >> private. The actual data has been hidden inside 'vout_thread_sys_t' ... >> defined in vout_internal.h and visible only to libvlc itself (not to >> plugins). > > No. The problem is that vout_thread is now an internal structure altogether. > As of last September, video output plugins use a complete completely new > (needless to say, much better) plugin interface, vout_display. > > In other words, a new video output needs to be written (mostly) from scratch. > Pretty much everything except MacOS has already been ported or removed. There is a vout that should works for Mac OS. It's vout/macosx.m. Pierre From mirsal.ennaime at gmail.com Wed Jun 16 03:21:00 2010 From: mirsal.ennaime at gmail.com (Mirsal Ennaime) Date: Wed, 16 Jun 2010 03:21:00 +0200 Subject: [vlc-devel] [PATCH] dbus control: Split the mpris dbus interfaces Message-ID: <1276651260-3067-1-git-send-email-mirsal.ennaime@gmail.com> The mpris defines three dbus interfaces with the same name. This is wrong on many levels and the second version of the spec which is currently being drafted fixes that. In order to be able to reflect this change, the dbus control module should not assume that these interface have the same name. With this patch applied, VLC still complies with the mpris v1.0 --- modules/control/dbus.c | 70 ++++++++++++++++++++++++++++-------------------- modules/control/dbus.h | 12 +++++--- 2 files changed, 49 insertions(+), 33 deletions(-) diff --git a/modules/control/dbus.c b/modules/control/dbus.c index d64ed69..a9f59c1 100644 --- a/modules/control/dbus.c +++ b/modules/control/dbus.c @@ -629,8 +629,8 @@ DBUS_METHOD( handle_introspect_tracklist ) * handle_*: answer to incoming messages *****************************************************************************/ -#define METHOD_FUNC( method, function ) \ - else if( dbus_message_is_method_call( p_from, MPRIS_DBUS_INTERFACE, method ) )\ +#define METHOD_FUNC( interface, method, function ) \ + else if( dbus_message_is_method_call( p_from, interface, method ) )\ return function( p_conn, p_from, p_this ) DBUS_METHOD( handle_root ) @@ -642,9 +642,9 @@ DBUS_METHOD( handle_root ) /* here D-Bus method's names are associated to an handler */ - METHOD_FUNC( "Identity", Identity ); - METHOD_FUNC( "MprisVersion", MprisVersion ); - METHOD_FUNC( "Quit", Quit ); + METHOD_FUNC( MPRIS_DBUS_ROOT_INTERFACE, "Identity", Identity ); + METHOD_FUNC( MPRIS_DBUS_ROOT_INTERFACE, "MprisVersion", MprisVersion ); + METHOD_FUNC( MPRIS_DBUS_ROOT_INTERFACE, "Quit", Quit ); return DBUS_HANDLER_RESULT_NOT_YET_HANDLED; } @@ -658,19 +658,19 @@ DBUS_METHOD( handle_player ) /* here D-Bus method's names are associated to an handler */ - METHOD_FUNC( "Prev", Prev ); - METHOD_FUNC( "Next", Next ); - METHOD_FUNC( "Stop", Stop ); - METHOD_FUNC( "Play", Play ); - METHOD_FUNC( "Pause", Pause ); - METHOD_FUNC( "Repeat", Repeat ); - METHOD_FUNC( "VolumeSet", VolumeSet ); - METHOD_FUNC( "VolumeGet", VolumeGet ); - METHOD_FUNC( "PositionSet", PositionSet ); - METHOD_FUNC( "PositionGet", PositionGet ); - METHOD_FUNC( "GetStatus", GetStatus ); - METHOD_FUNC( "GetMetadata", GetCurrentMetadata ); - METHOD_FUNC( "GetCaps", GetCaps ); + METHOD_FUNC( MPRIS_DBUS_PLAYER_INTERFACE, "Prev", Prev ); + METHOD_FUNC( MPRIS_DBUS_PLAYER_INTERFACE, "Next", Next ); + METHOD_FUNC( MPRIS_DBUS_PLAYER_INTERFACE, "Stop", Stop ); + METHOD_FUNC( MPRIS_DBUS_PLAYER_INTERFACE, "Play", Play ); + METHOD_FUNC( MPRIS_DBUS_PLAYER_INTERFACE, "Pause", Pause ); + METHOD_FUNC( MPRIS_DBUS_PLAYER_INTERFACE, "Repeat", Repeat ); + METHOD_FUNC( MPRIS_DBUS_PLAYER_INTERFACE, "VolumeSet", VolumeSet ); + METHOD_FUNC( MPRIS_DBUS_PLAYER_INTERFACE, "VolumeGet", VolumeGet ); + METHOD_FUNC( MPRIS_DBUS_PLAYER_INTERFACE, "PositionSet", PositionSet ); + METHOD_FUNC( MPRIS_DBUS_PLAYER_INTERFACE, "PositionGet", PositionGet ); + METHOD_FUNC( MPRIS_DBUS_PLAYER_INTERFACE, "GetStatus", GetStatus ); + METHOD_FUNC( MPRIS_DBUS_PLAYER_INTERFACE, "GetMetadata", GetCurrentMetadata ); + METHOD_FUNC( MPRIS_DBUS_PLAYER_INTERFACE, "GetCaps", GetCaps ); return DBUS_HANDLER_RESULT_NOT_YET_HANDLED; } @@ -683,13 +683,13 @@ DBUS_METHOD( handle_tracklist ) /* here D-Bus method's names are associated to an handler */ - METHOD_FUNC( "GetMetadata", GetMetadata ); - METHOD_FUNC( "GetCurrentTrack", GetCurrentTrack ); - METHOD_FUNC( "GetLength", GetLength ); - METHOD_FUNC( "AddTrack", AddTrack ); - METHOD_FUNC( "DelTrack", DelTrack ); - METHOD_FUNC( "SetLoop", SetLoop ); - METHOD_FUNC( "SetRandom", SetRandom ); + METHOD_FUNC( MPRIS_DBUS_TRACKLIST_INTERFACE, "GetMetadata", GetMetadata ); + METHOD_FUNC( MPRIS_DBUS_TRACKLIST_INTERFACE, "GetCurrentTrack", GetCurrentTrack ); + METHOD_FUNC( MPRIS_DBUS_TRACKLIST_INTERFACE, "GetLength", GetLength ); + METHOD_FUNC( MPRIS_DBUS_TRACKLIST_INTERFACE, "AddTrack", AddTrack ); + METHOD_FUNC( MPRIS_DBUS_TRACKLIST_INTERFACE, "DelTrack", DelTrack ); + METHOD_FUNC( MPRIS_DBUS_TRACKLIST_INTERFACE, "SetLoop", SetLoop ); + METHOD_FUNC( MPRIS_DBUS_TRACKLIST_INTERFACE, "SetRandom", SetRandom ); return DBUS_HANDLER_RESULT_NOT_YET_HANDLED; } @@ -939,7 +939,10 @@ static int AllCallback( vlc_object_t *p_this, const char *psz_var, *****************************************************************************/ DBUS_SIGNAL( CapsChangeSignal ) { - SIGNAL_INIT( MPRIS_DBUS_PLAYER_PATH, "CapsChange" ); + SIGNAL_INIT( MPRIS_DBUS_PLAYER_INTERFACE, + MPRIS_DBUS_PLAYER_PATH, + "CapsChange" ); + OUT_ARGUMENTS; ADD_INT32( &((intf_thread_t*)p_data)->p_sys->i_caps ); @@ -951,7 +954,10 @@ DBUS_SIGNAL( CapsChangeSignal ) *****************************************************************************/ DBUS_SIGNAL( TrackListChangeSignal ) { /* emit the new tracklist lengh */ - SIGNAL_INIT( MPRIS_DBUS_TRACKLIST_PATH, "TrackListChange"); + SIGNAL_INIT( MPRIS_DBUS_TRACKLIST_INTERFACE, + MPRIS_DBUS_TRACKLIST_PATH, + "TrackListChange"); + OUT_ARGUMENTS; playlist_t *p_playlist = ((intf_thread_t*)p_data)->p_sys->p_playlist; @@ -1000,7 +1006,10 @@ static int TrackListChangeEmit( intf_thread_t *p_intf, int signal, int i_node ) DBUS_SIGNAL( TrackChangeSignal ) { /* emit the metadata of the new item */ - SIGNAL_INIT( MPRIS_DBUS_PLAYER_PATH, "TrackChange" ); + SIGNAL_INIT( MPRIS_DBUS_PLAYER_INTERFACE, + MPRIS_DBUS_PLAYER_PATH, + "TrackChange" ); + OUT_ARGUMENTS; input_item_t *p_item = (input_item_t*) p_data; @@ -1015,7 +1024,10 @@ DBUS_SIGNAL( TrackChangeSignal ) DBUS_SIGNAL( StatusChangeSignal ) { /* send the updated status info on the bus */ - SIGNAL_INIT( MPRIS_DBUS_PLAYER_PATH, "StatusChange" ); + SIGNAL_INIT( MPRIS_DBUS_PLAYER_INTERFACE, + MPRIS_DBUS_PLAYER_PATH, + "StatusChange" ); + OUT_ARGUMENTS; /* we're called from a callback of input_thread_t, so it can not be diff --git a/modules/control/dbus.h b/modules/control/dbus.h index 43ec891..edb5904 100644 --- a/modules/control/dbus.h +++ b/modules/control/dbus.h @@ -29,8 +29,12 @@ /* DBUS IDENTIFIERS */ /* name registered on the session bus */ -#define VLC_MPRIS_DBUS_SERVICE "org.mpris.vlc" -#define MPRIS_DBUS_INTERFACE "org.freedesktop.MediaPlayer" +#define VLC_MPRIS_DBUS_SERVICE "org.mpris.vlc" + +#define MPRIS_DBUS_ROOT_INTERFACE "org.freedesktop.MediaPlayer" +#define MPRIS_DBUS_PLAYER_INTERFACE "org.freedesktop.MediaPlayer" +#define MPRIS_DBUS_TRACKLIST_INTERFACE "org.freedesktop.MediaPlayer" + #define MPRIS_DBUS_ROOT_PATH "/" #define MPRIS_DBUS_PLAYER_PATH "/Player" #define MPRIS_DBUS_TRACKLIST_PATH "/TrackList" @@ -56,9 +60,9 @@ dbus_message_unref( p_msg ); \ return DBUS_HANDLER_RESULT_HANDLED -#define SIGNAL_INIT( path, signal ) \ +#define SIGNAL_INIT( interface, path, signal ) \ DBusMessage *p_msg = dbus_message_new_signal( path, \ - MPRIS_DBUS_INTERFACE, signal ); \ + interface, signal ); \ if( !p_msg ) return DBUS_HANDLER_RESULT_NEED_MEMORY; \ #define SIGNAL_SEND \ -- 1.7.0.4 From jb at videolan.org Wed Jun 16 03:53:35 2010 From: jb at videolan.org (Jean-Baptiste Kempf) Date: Wed, 16 Jun 2010 03:53:35 +0200 Subject: [vlc-devel] [vlc-commits] Tag 1.1.0-rc4 : Jean-Baptiste Kempf : VLC 1.1.0-rc4 - 'The Luggage' In-Reply-To: <20100616014404.59B10F4CA7@albiero.videolan.org> References: <20100616014404.59B10F4CA7@albiero.videolan.org> Message-ID: <20100616015335.GA8218@videolan.org> On Wed, Jun 16, 2010 at 03:44:04AM +0200, git at videolan.org wrote : > VLC 1.1.0-rc4 - 'The Luggage' ftp://ftp.videolan.org/pub/testing/vlc-1.1.0-rc4/vlc-1.1.0-rc4.tar.bz2 Please refrain from committing too much without reviews from someone else now, except if it is related to: - packaging - OS X issues Best Regards, -- Jean-Baptiste Kempf http://www.jbkempf.com/ From ileoo at videolan.org Wed Jun 16 07:13:30 2010 From: ileoo at videolan.org (Ilkka Ollakka) Date: Wed, 16 Jun 2010 08:13:30 +0300 Subject: [vlc-devel] Updated patch for ogg/theora seeking In-Reply-To: References: <20100608211103.GF25090@linux-3azp> <20100608221700.GG25090@linux-3azp> <20100609065246.GA32076@linux-3azp> Message-ID: <20100616051330.GB28104@linux-3azp> On Wed, Jun 09, 2010 at 08:04:55PM -0300, salsaman wrote: > While I am waiting for a reply, I just thought I would explain the search > algorithm used, so you verify it is very efficient. Hi, I'm sorry but I don't have that much time to foxus on this untill weekend, just thought to ping about matter that it isn't forgotten. -- Ilkka Ollakka Help me, I'm a prisoner in a Fortune cookie file! -------------- next part -------------- A non-text attachment was scrubbed... Name: not available Type: application/pgp-signature Size: 490 bytes Desc: not available URL: From ileoo at videolan.org Wed Jun 16 07:20:44 2010 From: ileoo at videolan.org (Ilkka Ollakka) Date: Wed, 16 Jun 2010 08:20:44 +0300 Subject: [vlc-devel] [PATCH] dvbsub.c : Don't fill region if page_state == 0 In-Reply-To: <1276606042-25884-1-git-send-email-bjorn@haxx.se> References: <20100608183713.GC8419@giant> <1276606042-25884-1-git-send-email-bjorn@haxx.se> Message-ID: <20100616052043.GC28104@linux-3azp> On Tue, Jun 15, 2010 at 02:47:22PM +0200, bjorn at haxx.se wrote: > From: Bj?rn Stenberg > My interpretation of ETSI EN 300 743 is that the region_fill_flag of a region > composition segment should not cause the region to be filled when the containing > page composition segment has its' page_state variable set to 0 (page update). Hi, Thanks for your patch, but this one didn't fix that teststream you provided with the problem (http://bjorn.haxx.se/vlc/fill_problem.ts) or atleast didn't fix it for me when I quickly tested it. -- Ilkka Ollakka All of the true things I am about to tell you are shameless lies. -- The Book of Bokonon / Kurt Vonnegut Jr. -------------- next part -------------- A non-text attachment was scrubbed... Name: not available Type: application/pgp-signature Size: 490 bytes Desc: not available URL: From gmaxwell at gmail.com Wed Jun 16 08:03:31 2010 From: gmaxwell at gmail.com (Gregory Maxwell) Date: Wed, 16 Jun 2010 02:03:31 -0400 Subject: [vlc-devel] Updated patch for ogg/theora seeking In-Reply-To: References: <20100607191537.GB25090@linux-3azp> <20100607201236.GC25090@linux-3azp> <20100607202829.GD25090@linux-3azp> <20100608211103.GF25090@linux-3azp> <20100608221700.GG25090@linux-3azp> <20100609065246.GA32076@linux-3azp> Message-ID: On Wed, Jun 9, 2010 at 7:04 PM, salsaman wrote: > While I am waiting for a reply, I just thought I would explain the search > algorithm used, so you verify it is very efficient. > > We create an index on the fly, this index is basically: > offset in file -> maximum frame number > > When asked to seek to a particular frame, we first check the index to see if > we have approximate boundaries for the seek, otherwise we will seek in the > whole file, from data_start until the end. > > The area to be searched is divided into two halves. We first check the upper > half, and get the highest and lowest granulepos. (The granulepos is > basically keyframe * keyframe_offset + frame offset). If our target frame > lies in this region we subdivide it into two halves, otherwise we check the > lower half from earlier. We stop when we have found the keyframe for our > target frame, or the search region is < minimum_page_size. This sounds like a plain bisection search. You can get faster results using an interpolated bisection. If the current range is 0........10,000 seconds. And 0....100Mbytes and you want 2500 seconds, you seek to ~25mbytes (minus the average or maximum page size) because 2500 seconds is 25% of 10000 and 25 is 25% of 100. This is guaranteed to converge just like a bisection search. You can optimize this further, becoming closer to bisection as the ranges get smaller and the variability becomes greater, and biasing more downward because backward motion is more expensive that forward motion... but simply using an interpolation in the outer most step can cut several seeks out of a large file. If the bitrate is very constant (like audio) it can get your average down to something like three no matter what the file size is. (libvorbisfile does this) Regarding keyframes. Your text above is concerning me. You do not know the granpos of the keyframe covering a particular frame until you have visited that frame. The granshift implies a _maximum_ keyframe interval, but the keyframes can be placed sooner than that as the encoder desires, and they often are. It wasn't quite clear to me that your approach was dealing with this. I should probably go read the code. Normally, In order to do a fully synchronized seek you must first seek to the desired frame, extract the granpos of its keyframe, seek back to that point, then decode forward. If you cache your seeking requests along the way and use them to hot-start the second search then you should be able to hit the key frame very quickly in one seek or so. I'd recommend adding both keyframes and non-keyframes to your index (or keep two indexes in memory, if you're minimizing memory usage and don't want non-keyframes polluting a finite index) since both can help constrain the bounds of your future searches, not just ones belonging to a common keyframe offset. Every seek provides information which might be useful in the future. The indexing scheme in ogg index isn't precisely compatible with your approach, so you won't just be able to load its values into your index. This is because instead of mapping time->bytes it maps time to a byte location which is equal to or less than the byte location of the requested time, such that the expressed byte-location is sufficient to perfectly reconstruct the requested time. It is done this way so that it will work uniformly across formats with drastically different reference structures (dirac, theora, vorbis) without requiring too more per-codec smarts in the applications. But this also means that 1:00-> byte 1, 2:00->byte 2, 3:00->byte 3 is a perfectly valid, if useless, index. (since all those byte locations are sufficient starting points for finding those times. In the common (theora keyframe) case the byte location will exactly match the page which starts the keyframe that you want, but the promise is that it will only be equal to or less than. So instead of copying the ogg skeleton index into your indexes, you should use it to hot start (choose the position of your first seek) your existing algorithm. When everything works well the combination will give you the absolute minimum number of seeks possible, and when the index is missing or corrupt you would still always produce correct results. (the skeleton index also isn't guaranteed to store all (or even most) possible seek points, otherwise it would grow to enormous sizes, so you must still have regular seeking logic to get acceptable granularity) Cheers! From juhovh at iki.fi Wed Jun 16 09:45:20 2010 From: juhovh at iki.fi (=?iso-8859-1?Q?Juho_V=E4h=E4-Herttua?=) Date: Wed, 16 Jun 2010 10:45:20 +0300 Subject: [vlc-devel] [PATCH] Don't force --enable-macosx on master Message-ID: <823C5BA9-8F5F-4C98-92BF-2890A82D5B5B@iki.fi> The old macosx code is broken when it comes to vout code, but still enabled in configure.ac. This patch should make it disabled by default. -------------- next part -------------- A non-text attachment was scrubbed... Name: 0001-OSX-Don-t-force-enable-macosx-on-master-because-the-.patch Type: application/octet-stream Size: 831 bytes Desc: not available URL: From juhovh at iki.fi Wed Jun 16 09:46:14 2010 From: juhovh at iki.fi (=?iso-8859-1?Q?Juho_V=E4h=E4-Herttua?=) Date: Wed, 16 Jun 2010 10:46:14 +0300 Subject: [vlc-devel] [PATCH] Do not link to ole32 when trying to build Qt4 module on OSX Message-ID: The Qt4 detection in configure.ac wants to link to ole32 even when on darwin, this patch should fix it. -------------- next part -------------- A non-text attachment was scrubbed... Name: 0002-Do-not-link-to-ole32-when-trying-to-build-Qt4-module.patch Type: application/octet-stream Size: 1186 bytes Desc: not available URL: From pankajdnapster at gmail.com Wed Jun 16 10:36:45 2010 From: pankajdnapster at gmail.com (Pankaj yadav) Date: Wed, 16 Jun 2010 14:06:45 +0530 Subject: [vlc-devel] mutex problem Message-ID: Hi, I am running vlc with rc interface. First src/playlist/thread.c Thread() routine starts running which locks the mutex and enters the main thread loop. and never unlocks the mutex. Then rc interface main loop runs.When I enter "add file:///path" ..this thread reaches routine playlist_CurrentInput() of src/playlist/engie.c and this function again tries to lock the same mutex [which is already locked by the playlist thread]. I expect this to deadlock ...but it doesnot happen in actual.I know I am mising something. But I am unable to guess how does it work actually in vlc. I need someone to help me understand that. -- Thanks and Regards Pankaj Yadav From salsaman at gmail.com Wed Jun 16 12:01:33 2010 From: salsaman at gmail.com (salsaman) Date: Wed, 16 Jun 2010 07:01:33 -0300 Subject: [vlc-devel] Updated patch for ogg/theora seeking In-Reply-To: References: <20100607191537.GB25090@linux-3azp> <20100607201236.GC25090@linux-3azp> <20100607202829.GD25090@linux-3azp> <20100608211103.GF25090@linux-3azp> <20100608221700.GG25090@linux-3azp> <20100609065246.GA32076@linux-3azp> Message-ID: On Wed, Jun 16, 2010 at 3:03 AM, Gregory Maxwell wrote: > On Wed, Jun 9, 2010 at 7:04 PM, salsaman wrote: > > While I am waiting for a reply, I just thought I would explain the search > > algorithm used, so you verify it is very efficient. > > > > We create an index on the fly, this index is basically: > > offset in file -> maximum frame number > > > > When asked to seek to a particular frame, we first check the index to see > if > > we have approximate boundaries for the seek, otherwise we will seek in > the > > whole file, from data_start until the end. > > > > The area to be searched is divided into two halves. We first check the > upper > > half, and get the highest and lowest granulepos. (The granulepos is > > basically keyframe * keyframe_offset + frame offset). If our target frame > > lies in this region we subdivide it into two halves, otherwise we check > the > > lower half from earlier. We stop when we have found the keyframe for our > > target frame, or the search region is < minimum_page_size. > > > This sounds like a plain bisection search. You can get faster results > using an interpolated bisection. > > If the current range is 0........10,000 seconds. And 0....100Mbytes > and you want 2500 seconds, you seek to ~25mbytes (minus the average or > maximum page size) because 2500 seconds is 25% of 10000 and 25 is 25% > of 100. > > This is guaranteed to converge just like a bisection search. You can > optimize this further, becoming closer to bisection as the ranges get > smaller and the variability becomes greater, and biasing more downward > because backward motion is more expensive that forward motion... but > simply using an interpolation in the outer most step can cut several > seeks out of a large file. If the bitrate is very constant (like > audio) it can get your average down to something like three no matter > what the file size is. (libvorbisfile does this) > > OK, I will test this, although I think it will improve only the very first search. The way it works currently is that we first seed the index with first and last granulepos (we set a fake keyframe at time==0 and we discover the last keyframe when calculating the file duration). After this we search using the index to get approximate bounds, then using bi-sections. Now imagine if we were seeking to 25%. It would save one iteration on the first search, but we would not discover the information at 50%. So assuming we were seeking randomly, we would have to check 50% later on anyway. But I can see the point - that as we get closer to the predicted point, the probability thet we need that information later decreases. Anyway I will look into your suggestion. I am not sure how to implement it though, since the current algorithm requires two equally sized areas (upper is checked first - we get first granulepos, if the lower keyframe is too large, we check the lower section; if the lower keyframe is OK we check the upper keyframe and then subdivide and repeat the process). The idea being, we check upper first, since lower is more likely to have been played already, and thus have its data in the index. > Regarding keyframes. Your text above is concerning me. You do not > know the granpos of the keyframe covering a particular frame until you > have visited that frame. The granshift implies a _maximum_ keyframe > interval, but the keyframes can be placed sooner than that as the > encoder desires, and they often are. It wasn't quite clear to me > that your approach was dealing with this. I should probably go read > the code. > > You are correct. In fact the code makes no assumptions, it only maps frame -> keyframe as it discovers this. Then later if we discover a higher frame that maps to the same keyframe it updates that entry. In fact, the above is not strictly true, what is mapped is: granulepos of highest_frame -> file offset in bytes where the file offset is a suitable point to decode the keyframe for highest_frame, since we can get both frame and keyframe from the granulepos. This is ordered by granulepos in a doubly-linked list. When we are asked to find a new frame, we first get approximate bounds from the index, then bisect the remaining search domain. During playback, we also update any existing entries if we find a higher frame that maps to a keyframe already in the index. > Normally, In order to do a fully synchronized seek you must first seek > to the desired frame, extract the granpos of its keyframe, seek back > to that point, then decode forward. If you cache your seeking > requests along the way and use them to hot-start the second search > then you should be able to hit the key frame very quickly in one seek > or so. > > > > I'd recommend adding both keyframes and non-keyframes to your index > (or keep two indexes in memory, if you're minimizing memory usage and > don't want non-keyframes polluting a finite index) since both can help > constrain the bounds of your future searches, not just ones belonging > to a common keyframe offset. Every seek provides information which > might be useful in the future. > > That is precisely what the program does. It stores frame and keyframe in the i_granulpos field, and byte offset for a sync point in the i_pagepos field. > The indexing scheme in ogg index isn't precisely compatible with your > approach, so you won't just be able to load its values into your > index. This is because instead of mapping time->bytes it maps time to > a byte location which is equal to or less than the byte location of > the requested time, such that the expressed byte-location is > sufficient to perfectly reconstruct the requested time. It is done > this way so that it will work uniformly across formats with > drastically different reference structures (dirac, theora, vorbis) > without requiring too more per-codec smarts in the applications. > But this also means that 1:00-> byte 1, 2:00->byte 2, 3:00->byte 3 is > a perfectly valid, if useless, index. (since all those byte locations > are sufficient starting points for finding those times. In the common > (theora keyframe) case the byte location will exactly match the page > which starts the keyframe that you want, but the promise is that it > will only be equal to or less than. > > So instead of copying the ogg skeleton index into your indexes, you > should use it to hot start (choose the position of your first seek) > your existing algorithm. When everything works well the combination > will give you the absolute minimum number of seeks possible, and when > the index is missing or corrupt you would still always produce correct > results. > > Yes, that should work I think. > (the skeleton index also isn't guaranteed to store all (or even most) > possible seek points, otherwise it would grow to enormous sizes, so > you must still have regular seeking logic to get acceptable > granularity) > > Actually the memory required is very small. For my index, we have: granulepos -> page_offset per keyframe. Since both are int64_t that 16 bytes per keyframe. Assuming an average of 8 frames per keyframe that works out at an additional 2 bytes per frame. Actually if you are generating an index for skeleton, then I would suggest using my code to do so. As a side note I am now looking into seeking in dirac. The method is somewhat similar except that instead of keyframes we have sync frames. These are frames which follow immediately from a sequence header start. Since the granulepos does not provide this information the algorithm is to first seek for a packet containing a sequence header (byte 4 of the packet == 0x00). Then we rewind the stream to this page and begin decoding until we get a frame number. I added a third field to the index for dirac, i_pagepos end. So we have: i_pagepos -> sync_frame ->i_pagepos_end each region searched is added to the index. If we search a region and no sync frame is found then sync_frame is set to -1, so we do not waste time by searching these regions again. i_pagepos is the byte offset of the start of the page containing the start of the sequence header packet, i_pagepos_end is aligned to the end of the page where we stopped searching. The idea is then, given a target frame, we find a lower bound at the sync_frame <= target_frame. For dirac there is no upper bound (i.e. a frame can be decoded any distance after its sync frame). In practice this distance is generally no more than 3 or 4 frames. Given a region to search we find the first and last sync frames, skipping over any regions which have been negatively searched (sync_frame==-1) and using any positive information (sync_frame>-1). If we get two contiguous regions with -1 sync_frame then these are joined together. I am also interested to know what you think about my suggestion of adding the CAN_EXACTSEEK flag. Regards, Gabriel. > > Cheers! > _______________________________________________ > vlc-devel mailing list > To unsubscribe or modify your subscription options: > http://mailman.videolan.org/listinfo/vlc-devel > -------------- next part -------------- An HTML attachment was scrubbed... URL: From gozer at progrock.com Wed Jun 16 12:44:38 2010 From: gozer at progrock.com (gozer at progrock.com) Date: Wed, 16 Jun 2010 03:44:38 -0700 Subject: [vlc-devel] Questions on generating the binary file for Windows Message-ID: <20100616034438.2455BF87@resin06.mta.everyone.net> Hi, I'm currently switching from Windows/Cygwin to Linux/Mingw for generating the windows binaries, using the current git source tree. I have several problems/questions: - contrib-20100504-win32-bin-gcc-4.4.2-runtime-3.17-only.tar.bz2 (fetched from http://people.videolan.org/~jb/Contribs/) was used: moc.exe / uic.exe cannot be used during the cross compilation. Should'nt the need for the native compiler be more cleary expressed ? - contrib-20100504-win32-bin-gcc-4.4.2-runtime-3.17-only.tar.bz2 : missing 'usr/win32/include/mpcdec/config_win32.h' - for Qt4 translations you need to set QT4LOCALEDIR (QT4LOCALEDIR=/usr/share/qt4/translations for example) during the 'make package-win32' but this is expressed nowhere. Is it mandatory ? - mingw32-gcc-4.4.2 is used, and at the end you end up with several dlls depending on 'libgcc_s_sjlj-1.dll', but nothing is actually done to add this dll to the final package. Is it possible to remove the dependency to it? - I have created (based on http://wiki.videolan.org/Win32Compile) a complete howto for compiling on Fedora 13. How is-it possible to add this to the VLC wiki? - In the final package you have both 'script.lua' and 'script.luac' which means some entries are dupplicated in the GUI menus. Shouln't the '.lua' be removed when '.luac' is present? Cheers, -- Eric Lassauge #lassauge [at] users {dot} sf {dot} net# _____________________________________________________________ For the best in Progressive Rock on the internet, check out PROGROCK.COM! http://www.progrock.com From dilaroga at gmail.com Wed Jun 16 13:10:37 2010 From: dilaroga at gmail.com (Dilaroga dev) Date: Wed, 16 Jun 2010 13:10:37 +0200 Subject: [vlc-devel] [PATCH 2/4] Remove observer from the notification center in the dealloc method to prevent a crash... Message-ID: Hi, In attachment a patch ( vlc-1.1 branch ) that fixes a reproducible issue in gui/macosx : open VLC, show the About panel, then quit VLC causes a crash. -- Sebastien Zwickert. -------------- next part -------------- An HTML attachment was scrubbed... URL: -------------- next part -------------- A non-text attachment was scrubbed... Name: 0002-Remove-observer-from-the-notification-center-in-the.patch Type: application/octet-stream Size: 1050 bytes Desc: not available URL: From dilaroga at gmail.com Wed Jun 16 13:14:21 2010 From: dilaroga at gmail.com (Dilaroga dev) Date: Wed, 16 Jun 2010 13:14:21 +0200 Subject: [vlc-devel] [PATCH] gui/macosx: fixes equalizer issue #3718. Message-ID: Hi, In attachment a patch that fixes equalizer issue on macosx ( vlc-1.1 branch ). -- Sebastien Zwickert. -------------- next part -------------- An HTML attachment was scrubbed... URL: -------------- next part -------------- A non-text attachment was scrubbed... Name: 0003-gui-macosx-fixes-equalizer-issue-3718.patch Type: application/octet-stream Size: 1261 bytes Desc: not available URL: From dilaroga at gmail.com Wed Jun 16 13:19:12 2010 From: dilaroga at gmail.com (Dilaroga dev) Date: Wed, 16 Jun 2010 13:19:12 +0200 Subject: [vlc-devel] [PATCH] gui/macosx: create a preferences file when first run. Message-ID: Hi, In attachment a patch that creates a preferences file at launch time when the vlcrc file doesn't exist yet. This patch closes #3684. -- Sebastien Zwickert. -------------- next part -------------- An HTML attachment was scrubbed... URL: -------------- next part -------------- A non-text attachment was scrubbed... Name: 0002-gui-macosx-create-a-preferences-file-when-first-run.patch Type: application/octet-stream Size: 1023 bytes Desc: not available URL: From dilaroga at gmail.com Wed Jun 16 13:21:39 2010 From: dilaroga at gmail.com (Dilaroga dev) Date: Wed, 16 Jun 2010 13:21:39 +0200 Subject: [vlc-devel] [PATCH] macosx_dialog_provider: set the usual keys equivalent to cancel or validate a dialog. Message-ID: Hi, In attachment a patch that set the usual keys equivalent on macosx to cancel or validate a dialog. -- Sebastien Zwickert. -------------- next part -------------- An HTML attachment was scrubbed... URL: -------------- next part -------------- A non-text attachment was scrubbed... Name: 0004-macosx_dialog_provider-set-the-usual-keys-equivalen.patch Type: application/octet-stream Size: 1835 bytes Desc: not available URL: From jmenon86 at gmail.com Wed Jun 16 13:25:07 2010 From: jmenon86 at gmail.com (Jai Menon) Date: Wed, 16 Jun 2010 16:55:07 +0530 Subject: [vlc-devel] [PATCH] AVFormat Muxer : Don't create AVStreams for unsupported ES types. Message-ID: <1276687507-20815-1-git-send-email-jmenon86@gmail.com> Currently, the libavformat based muxer supports audio and video streams properly. Subtitle muxing is still a work-in-progress. Till those are verified to work as well, we need to ensure that we don't create AVStreams with invalid codec type. --- modules/demux/avformat/mux.c | 8 ++++++-- 1 files changed, 6 insertions(+), 2 deletions(-) diff --git a/modules/demux/avformat/mux.c b/modules/demux/avformat/mux.c index cd40492..00c2277 100644 --- a/modules/demux/avformat/mux.c +++ b/modules/demux/avformat/mux.c @@ -214,6 +214,12 @@ static int AddStream( sout_mux_t *p_mux, sout_input_t *p_input ) p_input->p_sys = malloc( sizeof( int ) ); *((int *)p_input->p_sys) = p_sys->oc->nb_streams; + if( p_input->p_fmt->i_cat != VIDEO_ES && p_input->p_fmt->i_cat != AUDIO_ES) + { + msg_Warn( p_mux, "Unhandled ES category" ); + return VLC_EGENERIC; + } + stream = av_new_stream( p_sys->oc, p_sys->oc->nb_streams); if( !stream ) { @@ -257,8 +263,6 @@ static int AddStream( sout_mux_t *p_mux, sout_input_t *p_input ) codec->time_base.num = p_input->p_fmt->video.i_frame_rate_base; break; - default: - msg_Warn( p_mux, "Unhandled ES category" ); } codec->bit_rate = p_input->p_fmt->i_bitrate; -- 1.7.1 From kaarlo.raiha at gmail.com Wed Jun 16 14:32:39 2010 From: kaarlo.raiha at gmail.com (=?ISO-8859-1?B?S2FhcmxvIFLkaWjk?=) Date: Wed, 16 Jun 2010 15:32:39 +0300 Subject: [vlc-devel] Questions on generating the binary file for Windows In-Reply-To: References: <20100616034438.2455BF87@resin06.mta.everyone.net> Message-ID: 2010/6/16 Kaarlo R?ih? > > > 2010/6/16 gozer at progrock.com > > Hi, >> >> I'm currently switching from Windows/Cygwin to Linux/Mingw for generating >> the windows binaries, using the current git source tree. >> >> I have several problems/questions: >> - contrib-20100504-win32-bin-gcc-4.4.2-runtime-3.17-only.tar.bz2 (fetched >> from http://people.videolan.org/~jb/Contribs/) was used: moc.exe / >> uic.exe cannot be used during the cross compilation. Should'nt the need for >> the native compiler be more cleary expressed ? >> - contrib-20100504-win32-bin-gcc-4.4.2-runtime-3.17-only.tar.bz2 : >> missing 'usr/win32/include/mpcdec/config_win32.h' >> - for Qt4 translations you need to set QT4LOCALEDIR >> (QT4LOCALEDIR=/usr/share/qt4/translations for example) during the 'make >> package-win32' but this is expressed nowhere. Is it mandatory ? >> - mingw32-gcc-4.4.2 is used, and at the end you end up with several dlls >> depending on 'libgcc_s_sjlj-1.dll', but nothing is actually done to add this >> dll to the final package. Is it possible to remove the dependency to it? >> - I have created (based on http://wiki.videolan.org/Win32Compile) a >> complete howto for compiling on Fedora 13. How is-it possible to add this to >> the VLC wiki? >> > > Register to Wiki, then you should be able to create new page by opening > something like http://wiki.videolan.org/CompileWin32BinariesWithFedora and > then put link of that page to some already existing page. > > >> - In the final package you have both 'script.lua' and 'script.luac' which >> means some entries are dupplicated in the GUI menus. Shouln't the '.lua' be >> removed when '.luac' is present? >> > > I think this was discussed earlier but I can't find the proper link for > this. > Found it. http://mailman.videolan.org/pipermail/vlc-devel/2010-June/075165.html > >> Cheers, >> >> -- >> Eric Lassauge >> >> #lassauge [at] users {dot} sf {dot} net# >> >> _____________________________________________________________ >> For the best in Progressive Rock on the internet, check out PROGROCK.COM! >> http://www.progrock.com >> _______________________________________________ >> vlc-devel mailing list >> To unsubscribe or modify your subscription options: >> http://mailman.videolan.org/listinfo/vlc-devel >> > > -------------- next part -------------- An HTML attachment was scrubbed... URL: From kaarlo.raiha at gmail.com Wed Jun 16 14:29:55 2010 From: kaarlo.raiha at gmail.com (=?ISO-8859-1?B?S2FhcmxvIFLkaWjk?=) Date: Wed, 16 Jun 2010 15:29:55 +0300 Subject: [vlc-devel] Questions on generating the binary file for Windows In-Reply-To: <20100616034438.2455BF87@resin06.mta.everyone.net> References: <20100616034438.2455BF87@resin06.mta.everyone.net> Message-ID: 2010/6/16 gozer at progrock.com > Hi, > > I'm currently switching from Windows/Cygwin to Linux/Mingw for generating > the windows binaries, using the current git source tree. > > I have several problems/questions: > - contrib-20100504-win32-bin-gcc-4.4.2-runtime-3.17-only.tar.bz2 (fetched > from http://people.videolan.org/~jb/Contribs/) was used: moc.exe / uic.exe > cannot be used during the cross compilation. Should'nt the need for the > native compiler be more cleary expressed ? > - contrib-20100504-win32-bin-gcc-4.4.2-runtime-3.17-only.tar.bz2 : missing > 'usr/win32/include/mpcdec/config_win32.h' > - for Qt4 translations you need to set QT4LOCALEDIR > (QT4LOCALEDIR=/usr/share/qt4/translations for example) during the 'make > package-win32' but this is expressed nowhere. Is it mandatory ? > - mingw32-gcc-4.4.2 is used, and at the end you end up with several dlls > depending on 'libgcc_s_sjlj-1.dll', but nothing is actually done to add this > dll to the final package. Is it possible to remove the dependency to it? > - I have created (based on http://wiki.videolan.org/Win32Compile) a > complete howto for compiling on Fedora 13. How is-it possible to add this to > the VLC wiki? > Register to Wiki, then you should be able to create new page by opening something like http://wiki.videolan.org/CompileWin32BinariesWithFedora and then put link of that page to some already existing page. > - In the final package you have both 'script.lua' and 'script.luac' which > means some entries are dupplicated in the GUI menus. Shouln't the '.lua' be > removed when '.luac' is present? > I think this was discussed earlier but I can't find the proper link for this. > > Cheers, > > -- > Eric Lassauge > > #lassauge [at] users {dot} sf {dot} net# > > _____________________________________________________________ > For the best in Progressive Rock on the internet, check out PROGROCK.COM! > http://www.progrock.com > _______________________________________________ > vlc-devel mailing list > To unsubscribe or modify your subscription options: > http://mailman.videolan.org/listinfo/vlc-devel > -------------- next part -------------- An HTML attachment was scrubbed... URL: From xtophe at chewa.net Wed Jun 16 14:51:02 2010 From: xtophe at chewa.net (Christophe Mutricy) Date: Wed, 16 Jun 2010 13:51:02 +0100 Subject: [vlc-devel] Questions on generating the binary file for Windows In-Reply-To: <20100616034438.2455BF87@resin06.mta.everyone.net> References: <20100616034438.2455BF87@resin06.mta.everyone.net> Message-ID: <1276692662.8159.2.camel@Tuiga> Hello, ----- Message d'origine ----- > I have several problems/questions: > - contrib-20100504-win32-bin-gcc-4.4.2-runtime-3.17-only.tar.bz2 (fetched from > http://people.videolan.org/~jb/Contribs/) was used: moc.exe / uic.exe cannot be > used during the cross compilation. Should'nt the need for the native compiler be > more cleary expressed ? - Modify the wiki. And you can add that the version need to match loosely > - for Qt4 translations you need to set > QT4LOCALEDIR (QT4LOCALEDIR=/usr/share/qt4/translations for example) during the > 'make package-win32' but this is expressed nowhere. Is it mandatory ? It's no longer needed -- Xtophe From jmenon86 at gmail.com Wed Jun 16 15:48:26 2010 From: jmenon86 at gmail.com (Jai Menon) Date: Wed, 16 Jun 2010 19:18:26 +0530 Subject: [vlc-devel] [PATCH] Correct description for the Ogg mux module. Message-ID: <1276696106-21581-1-git-send-email-jmenon86@gmail.com> --- configure.ac | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/configure.ac b/configure.ac index bc74f62..88d25cd 100644 --- a/configure.ac +++ b/configure.ac @@ -2375,7 +2375,7 @@ dnl ogg demux plugin dnl PKG_ENABLE_MODULES_VLC([OGG], [], [ogg >= 1.0], [Ogg demux support], [auto]) if test "${enable_sout}" != "no"; then - PKG_ENABLE_MODULES_VLC([MUX_OGG], [], [ogg >= 1.0], [Ogg demux support], [auto]) + PKG_ENABLE_MODULES_VLC([MUX_OGG], [], [ogg >= 1.0], [Ogg mux support], [auto]) fi if test "${enable_sout}" != "no"; then -- 1.7.1 From ileoo at videolan.org Wed Jun 16 16:36:30 2010 From: ileoo at videolan.org (Ilkka Ollakka) Date: Wed, 16 Jun 2010 17:36:30 +0300 Subject: [vlc-devel] [PATCH] Correct description for the Ogg mux module. In-Reply-To: <1276696106-21581-1-git-send-email-jmenon86@gmail.com> References: <1276696106-21581-1-git-send-email-jmenon86@gmail.com> Message-ID: <20100616143629.GD28104@linux-3azp> Thanks, Merged in 54e68fc2309beeeb87f12f54f9eafeb410ce4184 -- Ilkka Ollakka 10.0 times 0.1 is hardly ever 1.0. -------------- next part -------------- A non-text attachment was scrubbed... Name: not available Type: application/pgp-signature Size: 490 bytes Desc: not available URL: From jb at videolan.org Wed Jun 16 18:36:42 2010 From: jb at videolan.org (Jean-Baptiste Kempf) Date: Wed, 16 Jun 2010 18:36:42 +0200 Subject: [vlc-devel] [PATCH] gui/macosx: fixes equalizer issue #3718. In-Reply-To: References: Message-ID: <20100616163642.GA31897@videolan.org> On Wed, Jun 16, 2010 at 01:14:21PM +0200, Dilaroga dev wrote : > In attachment a patch that fixes equalizer issue on macosx ( vlc-1.1 branch > ). Applied. Best Regards, -- Jean-Baptiste Kempf http://www.jbkempf.com/ From jb at videolan.org Wed Jun 16 18:38:07 2010 From: jb at videolan.org (Jean-Baptiste Kempf) Date: Wed, 16 Jun 2010 18:38:07 +0200 Subject: [vlc-devel] [PATCH] macosx_dialog_provider: set the usual keys equivalent to cancel or validate a dialog. In-Reply-To: References: Message-ID: <20100616163807.GB31897@videolan.org> On Wed, Jun 16, 2010 at 01:21:39PM +0200, Dilaroga dev wrote : > Hi, > > In attachment a patch that set the usual keys equivalent on macosx to cancel > or validate a dialog. Applied. Best Regards, -- Jean-Baptiste Kempf http://www.jbkempf.com/ From jb at videolan.org Wed Jun 16 18:38:21 2010 From: jb at videolan.org (Jean-Baptiste Kempf) Date: Wed, 16 Jun 2010 18:38:21 +0200 Subject: [vlc-devel] [PATCH] AVFormat Muxer : Don't create AVStreams for unsupported ES types. In-Reply-To: <1276687507-20815-1-git-send-email-jmenon86@gmail.com> References: <1276687507-20815-1-git-send-email-jmenon86@gmail.com> Message-ID: <20100616163821.GC31897@videolan.org> On Wed, Jun 16, 2010 at 04:55:07PM +0530, Jai Menon wrote : > Currently, the libavformat based muxer supports audio and video streams > properly. Subtitle muxing is still a work-in-progress. Till those are > verified to work as well, we need to ensure that we don't create AVStreams > with invalid codec type. Thanks, applied. Best Regards, -- Jean-Baptiste Kempf http://www.jbkempf.com/ From jb at videolan.org Wed Jun 16 18:38:40 2010 From: jb at videolan.org (Jean-Baptiste Kempf) Date: Wed, 16 Jun 2010 18:38:40 +0200 Subject: [vlc-devel] [PATCH 2/4] Remove observer from the notification center in the dealloc method to prevent a crash... In-Reply-To: References: Message-ID: <20100616163840.GD31897@videolan.org> On Wed, Jun 16, 2010 at 01:10:37PM +0200, Dilaroga dev wrote : > In attachment a patch ( vlc-1.1 branch ) that fixes a reproducible issue in > gui/macosx : open VLC, show the About panel, then quit VLC causes a crash. Applied. Best Regards, -- Jean-Baptiste Kempf http://www.jbkempf.com/ From jb at videolan.org Wed Jun 16 18:41:21 2010 From: jb at videolan.org (Jean-Baptiste Kempf) Date: Wed, 16 Jun 2010 18:41:21 +0200 Subject: [vlc-devel] [PATCH] gui/macosx: create a preferences file when first run. In-Reply-To: References: Message-ID: <20100616164121.GA1210@videolan.org> On Wed, Jun 16, 2010 at 01:19:12PM +0200, Dilaroga dev wrote : > In attachment a patch that creates a preferences file at launch time when > the vlcrc file doesn't exist yet. > This patch closes #3684. Is this really the right place to do it? Souldn't this be fixed in the core? What happens if you start vlc with -Irc the first time? Best Regards, -- Jean-Baptiste Kempf http://www.jbkempf.com/ From remi at remlab.net Wed Jun 16 19:32:15 2010 From: remi at remlab.net (=?UTF-8?Q?R=C3=A9mi_Denis-Courmont?=) Date: Wed, 16 Jun 2010 19:32:15 +0200 Subject: [vlc-devel] mutex problem In-Reply-To: References: Message-ID: <0ca946e5676824ff125fe2198b0d0966@chewa.net> On Wed, 16 Jun 2010 14:06:45 +0530, Pankaj yadav wrote: > First src/playlist/thread.c Thread() routine starts running which > locks the mutex and enters the main thread loop. and never unlocks the > mutex. It does unlock the mutex in vlc_cond_wait(). -- R?mi Denis-Courmont http://www.remlab.net http://fi.linkedin.com/in/remidenis From remi at remlab.net Wed Jun 16 19:36:18 2010 From: remi at remlab.net (=?UTF-8?Q?R=C3=A9mi_Denis-Courmont?=) Date: Wed, 16 Jun 2010 19:36:18 +0200 Subject: [vlc-devel] [PATCH] Do not link to ole32 when trying to build Qt4 module on OSX In-Reply-To: References: Message-ID: <87b71be0135bc31f4ab6c1a5dfe7426b@chewa.net> On Wed, 16 Jun 2010 10:46:14 +0300, Juho V?h?-Herttua wrote: > The Qt4 detection in configure.ac wants to link to ole32 even when on > darwin, this patch should fix it. This is backward in my opinion. ole32 should be linked on Windows only instead. -- R?mi Denis-Courmont http://www.remlab.net http://fi.linkedin.com/in/remidenis From juhovh at iki.fi Wed Jun 16 19:44:38 2010 From: juhovh at iki.fi (=?iso-8859-1?Q?Juho_V=E4h=E4-Herttua?=) Date: Wed, 16 Jun 2010 20:44:38 +0300 Subject: [vlc-devel] [PATCH] Do not link to ole32 when trying to build Qt4 module on OSX In-Reply-To: <87b71be0135bc31f4ab6c1a5dfe7426b@chewa.net> References: <87b71be0135bc31f4ab6c1a5dfe7426b@chewa.net> Message-ID: <6B5EEF47-57E1-4ED5-AD56-51B81CF9F51F@iki.fi> On 16.6.2010, at 20.36, R?mi Denis-Courmont wrote: > On Wed, 16 Jun 2010 10:46:14 +0300, Juho V?h?-Herttua > wrote: >> The Qt4 detection in configure.ac wants to link to ole32 even when on >> darwin, this patch should fix it. > > This is backward in my opinion. ole32 should be linked on Windows only > instead. That's exactly what the patch does, ole32 is linked on "mingw32" and "mingwce", no additional libraries are linked on "darwin", all the rest are using X11. Of course can change != into == if it feels cleaner, but I wanted to use the same notation as the code before it. Should I modify the patch? Juho From deanaobrien78 at hotmail.com Wed Jun 16 05:45:43 2010 From: deanaobrien78 at hotmail.com (deanaobrien78 at hotmail.com) Date: Thu, 16 Jun 2010 03:45:43 +0000 Subject: [vlc-devel] =?utf-8?q?_=5BPATCH=5D_Mac_OS_X_dock_phahahahahahahah?= Message-ID: From simon.hailes at screen.subtitling.com Thu Jun 17 00:03:28 2010 From: simon.hailes at screen.subtitling.com (Simon Hailes) Date: Wed, 16 Jun 2010 23:03:28 +0100 Subject: [vlc-devel] [PATCH] dvbsub.c : Don't fill region if page_state == 0 References: Message-ID: <4476B296B92A4741A49B0BD017590700012FFD98@sss-uk-ex-02.screen.subtitling.local> > I've been working a little with DVB subtitling and found that if the region_fill > bit is set, vlc always fills the whole area on every region update and thus > overwrites any data previously rendered. This behaviour breaks "live" subtitling > where words are recieved one at a time and added to an existing region. This is correct behaviour. region_fill is set only when you *want* the region to be cleared to the specified background colour. If the next packet wishes to add to the region, it does not specify fill, and includes only the new object ID in the rcs. The existing objects have already been rendered and remain in the pixel buffer. > My interpretation of ETSI EN 300 743 is that the region_fill_flag of a > region composition segment should not cause the region to be filled > when the containing page composition segment has its' page_state > variable set to 0 (page update). If you ignore region_fill for page_state 'normal' (0), then you can't clear/fill a region without an acquisition point or mode change (except by covering it with other blank objects :) ). Simon Hailes | Screen Subtitling Systems Ltd | Chief Technology Officer Main Line : +44 (0)1473 831700 | Ext : 272 | Fax: +44 (0)1473 830078 simon.hailes at screen.subtitling.com | www.screen.subtitling.com Visit us at Broadcast Asia, Singapore Expo, 15th - 18th June, UK Pavillion, Stand 7H2-12 Before Printing, think about the environment This message may contain confidential and/or privileged information. If you are not the intended recipient you must not use, copy, disclose or take any action based on this message or any information herein. If you have received this message in error, please advise the sender immediately by reply e-mail and delete this message. Thank you for your cooperation. Screen Subtitling Systems Ltd. Registered in England No. 2596832. Registered Office: The Old Rectory, Claydon Church Lane, Claydon, Ipswich, Suffolk, IP6 0EQ From dilaroga at gmail.com Thu Jun 17 00:52:39 2010 From: dilaroga at gmail.com (Dilaroga Dev) Date: Thu, 17 Jun 2010 00:52:39 +0200 Subject: [vlc-devel] [PATCH] gui/macosx: create a preferences file when first run. In-Reply-To: <20100616164121.GA1210@videolan.org> References: <20100616164121.GA1210@videolan.org> Message-ID: On Jun 16, 2010, at 6:41 PM, Jean-Baptiste Kempf wrote: > On Wed, Jun 16, 2010 at 01:19:12PM +0200, Dilaroga dev wrote : >> In attachment a patch that creates a preferences file at launch time when >> the vlcrc file doesn't exist yet. >> This patch closes #3684. > > Is this really the right place to do it? gui/qt4 does it in FirstRun::save(). gui/macosx hasn't firstrun detection implemented that's why i check if the config file exists. > Souldn't this be fixed in the core? I don't know if all interfaces need to create a default configuration file at the first launch if the file doesn't yet exist. > What happens if you start vlc with -Irc the first time? The config file is not created. -- Sebastien Zwickert From rafael.carre at gmail.com Thu Jun 17 05:50:38 2010 From: rafael.carre at gmail.com (=?UTF-8?B?UmFmYcOrbCBDYXJyw6k=?=) Date: Thu, 17 Jun 2010 05:50:38 +0200 Subject: [vlc-devel] [PATCH] dbus control: Split the mpris dbus interfaces In-Reply-To: <1276651260-3067-1-git-send-email-mirsal.ennaime@gmail.com> References: <1276651260-3067-1-git-send-email-mirsal.ennaime@gmail.com> Message-ID: <20100617055038.746b0f6e@kru> On Wed, 16 Jun 2010 03:21:00 +0200 Mirsal Ennaime wrote: > The mpris defines three dbus interfaces with the same name. > This is wrong on many levels and the second version of the spec > which is currently being drafted fixes that. > > In order to be able to reflect this change, the dbus control module > should not assume that these interface have the same name. > > With this patch applied, VLC still complies with the mpris v1.0 no functional changes so ok with me and applied -- #define _ putchar int x=0,q=0,Z;z(){while(x<4){Z=(x?x:x^3)*5+(x>>1);_(((x++??'3)?Z:'['<< 1)+((13<<3)+2));}x=0;}char *s="ACB=+2DBK/,8=\"";main(){z();while(s[q]) {Z=s[q++]+q+43;Z=Z=='Z'?1<<5:Z;Z^0x7e?_(Z):_(' ')+z();}_((1<<3+3)+3);} //Rafa?l Carr? -------------- next part -------------- A non-text attachment was scrubbed... Name: signature.asc Type: application/pgp-signature Size: 198 bytes Desc: not available URL: From rem at videolan.org Thu Jun 17 06:00:38 2010 From: rem at videolan.org (=?iso-8859-1?q?R=E9mi?= Denis-Courmont) Date: Thu, 17 Jun 2010 07:00:38 +0300 Subject: [vlc-devel] [PATCH] INSERT_ELEM macro: assert arguments validity In-Reply-To: <1276455688-19994-1-git-send-email-rafael.carre@gmail.com> References: <1276455688-19994-1-git-send-email-rafael.carre@gmail.com> Message-ID: <201006170700.38561.rem@videolan.org> On Sunday 13 June 2010 22:01:28 Rafa?l Carr?, you wrote: > Assertion message shows the arguments and file/line from the file where > the macro is used, not from the header. No. We have already discussed that we do not pull new standard headers from , as it makes people write sloppy code. is especially bad as it depends on NDEBUG being predefined (or not). -- R?mi Denis-Courmont From jmenon86 at gmail.com Thu Jun 17 08:38:13 2010 From: jmenon86 at gmail.com (Jai Menon) Date: Thu, 17 Jun 2010 12:08:13 +0530 Subject: [vlc-devel] [PATCH] AVFormat Muxer : Set codec frame size. Message-ID: <1276756693-5557-1-git-send-email-jmenon86@gmail.com> This allows for correct output when using muxers (like the MOV/MP4 muxer) that require frame_size set. --- modules/demux/avformat/mux.c | 1 + 1 files changed, 1 insertions(+), 0 deletions(-) diff --git a/modules/demux/avformat/mux.c b/modules/demux/avformat/mux.c index 00c2277..a09aab4 100644 --- a/modules/demux/avformat/mux.c +++ b/modules/demux/avformat/mux.c @@ -238,6 +238,7 @@ static int AddStream( sout_mux_t *p_mux, sout_input_t *p_input ) codec->channels = p_input->p_fmt->audio.i_channels; codec->sample_rate = p_input->p_fmt->audio.i_rate; codec->time_base = (AVRational){1, codec->sample_rate}; + codec->frame_size = p_input->p_fmt->audio.i_frame_length; break; case VIDEO_ES: -- 1.7.1 From juhovh at iki.fi Thu Jun 17 09:25:08 2010 From: juhovh at iki.fi (=?iso-8859-1?Q?Juho_V=E4h=E4-Herttua?=) Date: Thu, 17 Jun 2010 10:25:08 +0300 Subject: [vlc-devel] Running interface on the main thread Message-ID: <484E172E-BD4B-41BB-8E15-357C1A9BFE40@iki.fi> Hi, I want to experiment a bit with running the Qt4 interface on Mac. Originally I had Qt4 binaries compiled with Carbon (old 32-bit MacOS based GUI framework) and it worked somewhat, but crashed from time to time and there was no video. With Laurent's help I fixed the vout module to work with Qt4 but that required the latest Qt4 binaries compiled with Cocoa (the NeXTStep based GUI framework, default now). I ran into a major issue with it though: The Cocoa framework main loop wants to be run on the main thread. VLC right now spawns a new thread for interface and calls QCoreApplication::exec there, which seems to break. Is there any possibility to move the interface code into the main thread? Right now the main() is in sigwait() state. Even Qt4 documentation seems to always refer QCoreApplication::exec running in the main() function, I think there's a possibility that this might cause problems on other systems as well. Juho Error message for clarification: 2010-06-17 01:25:48.321 VLC[92554:1a03] *** Assertion failure in +[NSUndoManager _endTopLevelGroupings], /SourceCache/Foundation/Foundation-751.21/Misc.subproj/NSUndoManager.m:271 2010-06-17 01:25:48.326 VLC[92554:1a03] +[NSUndoManager(NSInternal) _endTopLevelGroupings] is only safe to invoke on the main thread. 2010-06-17 01:25:48.339 VLC[92554:1a03] *** Assertion failure in +[NSUndoManager _endTopLevelGroupings], /SourceCache/Foundation/Foundation-751.21/Misc.subproj/NSUndoManager.m:271 2010-06-17 01:25:48.340 VLC[92554:1a03] An uncaught exception was raised 2010-06-17 01:25:48.340 VLC[92554:1a03] +[NSUndoManager(NSInternal) _endTopLevelGroupings] is only safe to invoke on the main thread. 2010-06-17 01:25:48.445 VLC[92554:1a03] *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: '+[NSUndoManager(NSInternal) _endTopLevelGroupings] is only safe to invoke on the main thread.' *** Call stack at first throw: ( 0 CoreFoundation 0x95634bda __raiseError + 410 1 libobjc.A.dylib 0x93167509 objc_exception_throw + 56 2 CoreFoundation 0x95634908 +[NSException raise:format:arguments:] + 136 3 Foundation 0x95d96dc3 -[NSAssertionHandler handleFailureInMethod:object:file:lineNumber:description:] + 116 4 Foundation 0x95ce2e3d +[NSUndoManager(NSPrivate) _endTopLevelGroupings] + 160 5 AppKit 0x91428afb -[NSApplication run] + 577 6 QtGui 0x04ab6d21 _ZN19QEventDispatcherMac13processEventsE6QFlagsIN10QEventLoop17ProcessEventsFlagEE + 1505 7 QtCore 0x05716181 _ZN10QEventLoop13processEventsE6QFlagsINS_17ProcessEventsFlagEE + 65 8 QtCore 0x057164ba _ZN10QEventLoop4execE6QFlagsINS_17ProcessEventsFlagEE + 170 9 QtCore 0x05717b56 _ZN16QCoreApplication4execEv + 182 10 libqt4_plugin.dylib 0x047ce097 _ZL6ThreadPv + 1127 11 libSystem.B.dylib 0x97cd1a19 _pthread_start + 345 12 libSystem.B.dylib 0x97cd189e thread_start + 34 ) Trace/BPT trap From bjorn at haxx.se Thu Jun 17 10:44:55 2010 From: bjorn at haxx.se (=?iso-8859-1?Q?Bj=F6rn?= Stenberg) Date: Thu, 17 Jun 2010 10:44:55 +0200 Subject: [vlc-devel] [PATCH] dvbsub.c : Don't fill region if page_state == 0 In-Reply-To: <4476B296B92A4741A49B0BD017590700012FFD98@sss-uk-ex-02.screen.subtitling.local> References: <4476B296B92A4741A49B0BD017590700012FFD98@sss-uk-ex-02.screen.subtitling.local> Message-ID: <20100617084455.GA2336@giant> Simon Hailes wrote: > This is correct behaviour. region_fill is set only when you *want* the > region to be cleared to the specified background colour. You can look at region_fill_flag as either a function call or a style indicator. If you see it as a function call, the decoder should fill the region every time it sees the flag. However, paragraph "5.3.4 Region fill" says: Where the region fill flag is set, the region fill in the subtitle decoder model happens before any objects are rendered into the region. This suggests that the decoder should not fill a region after it has had objects rendered onto it. Alternatively, that if you refill the region you must re-render the objects. And this fits rather well with viewing the flag as a style indicator instead, meaning "this region should have a filled background." Any subsequent "normal case" packets hence naturally have the flag set too, since the style has not changed. > If you ignore region_fill for page_state 'normal' (0), then you can't > clear/fill a region without an acquisition point or mode change (except by > covering it with other blank objects :) ). Sure you can, simply update the objects with empty bitmaps. -- Bj?rn From jb at videolan.org Thu Jun 17 12:17:27 2010 From: jb at videolan.org (Jean-Baptiste Kempf) Date: Thu, 17 Jun 2010 12:17:27 +0200 Subject: [vlc-devel] [PATCH] AVFormat Muxer : Set codec frame size. In-Reply-To: <1276756693-5557-1-git-send-email-jmenon86@gmail.com> References: <1276756693-5557-1-git-send-email-jmenon86@gmail.com> Message-ID: <20100617101727.GA5391@videolan.org> On Thu, Jun 17, 2010 at 12:08:13PM +0530, Jai Menon wrote : > This allows for correct output when using muxers (like the MOV/MP4 muxer) > that require frame_size set. Applied. Best Regards, -- Jean-Baptiste Kempf http://www.jbkempf.com/ From brezhoneg1 at yahoo.fr Thu Jun 17 14:13:02 2010 From: brezhoneg1 at yahoo.fr (brezhoneg1) Date: Thu, 17 Jun 2010 14:13:02 +0200 Subject: [vlc-devel] Running interface on the main thread In-Reply-To: <484E172E-BD4B-41BB-8E15-357C1A9BFE40@iki.fi> References: <484E172E-BD4B-41BB-8E15-357C1A9BFE40@iki.fi> Message-ID: <4C1A114E.1080200@yahoo.fr> Le 17/06/2010 09:25, Juho V?h?-Herttua a ?crit : > Hi, > > I want to experiment a bit with running the Qt4 interface on Mac. Originally I had Qt4 binaries compiled with Carbon (old 32-bit MacOS based GUI framework) and it worked somewhat, but crashed from time to time and there was no video. With Laurent's help I fixed the vout module to work with Qt4 but that required the latest Qt4 binaries compiled with Cocoa (the NeXTStep based GUI framework, default now). I ran into a major issue with it though: > > The Cocoa framework main loop wants to be run on the main thread. VLC right now spawns a new thread for interface and calls QCoreApplication::exec there, which seems to break. Is there any possibility to move the interface code into the main thread? Right now the main() is in sigwait() state. Even Qt4 documentation seems to always refer QCoreApplication::exec running in the main() function, I think there's a possibility that this might cause problems on other systems as well. > > Hi, Running a GUI interface on the main thread is possible (a flag is available, see src/interface/interface.c:112) Skins2 on Win32 used to work that way prior to vlc1.1. But, there were a few side effects, especially at vlc termination, that could not be worked out easily. It turned out that the problems with skins2(Win32) were the following : - Window management MUST NEVER be done in the Open/Close functions of the interface module (this is the main thread) - It HAS TO be done at the beginning/end of the spawned thread. This was because Win32 demands that most things pertaining to windows (from creation to management to destruction) be executed in one _single_ thread. (not necessarily the main thread). A common error is to create/destroy windows in the Open/Close functions of a module (therefore executed by the main thread), then expects the spawned thread to manage the life of these windows (eg the event loop). This simply doesn't work on Win32. Though I'm not familiar with MacOS, I would guess things may not be that different .... Rgds Erwan10 From juhovh at iki.fi Thu Jun 17 16:06:04 2010 From: juhovh at iki.fi (=?ISO-8859-1?Q?Juho_V=E4h=E4-Herttua?=) Date: Thu, 17 Jun 2010 17:06:04 +0300 Subject: [vlc-devel] Running interface on the main thread In-Reply-To: <4C1A114E.1080200@yahoo.fr> References: <484E172E-BD4B-41BB-8E15-357C1A9BFE40@iki.fi> <4C1A114E.1080200@yahoo.fr> Message-ID: <4C1A2BCC.6010304@iki.fi> 17.6.2010 15:13, brezhoneg1 kirjoitti: > Running a GUI interface on the main thread is possible (a flag is > available, see src/interface/interface.c:112) Thanks for the tip, looks like this is what I need. Needs some modifications since the main thread calls pf_run, which should again call the Qt4 main thread in this case. Actually the Qt4 interface doesn't clean up so nicely either, since it does the cleanup after the app.exec() and not in aboutToQuit() signal as it should. Moving the cleanup to a signal should make things a bit more simple... > Skins2 on Win32 used to work that way prior to vlc1.1. But, there > were a few side effects, especially at vlc termination, that could not > be worked out easily. > > It turned out that the problems with skins2(Win32) were the following : > - Window management MUST NEVER be done in the Open/Close > functions of the interface module (this is the main thread) > - It HAS TO be done at the beginning/end of the spawned thread. > > This was because Win32 demands that most things pertaining to > windows (from creation to management to destruction) be executed in > one _single_ thread. (not necessarily the main thread). It's quite common that all GUI code should be done in a single thread, on Mac there's the method "performSelectorOnMainThread" that can be called anywhere and will always execute the method on main thread regardless of where it's called. Other Mac modules should be using this when required, and this is part of the reason why the main loop has to be on the main thread and running. > A common error is to create/destroy windows in the Open/Close > functions of a module (therefore executed by the main thread), then > expects the spawned thread to manage the life of these windows (eg the > event loop). This simply doesn't work on Win32. > > Though I'm not familiar with MacOS, I would guess things may not be > that different .... I'll see when I get it working first, this at least gives me something to work on, since I was stuck for a while. Now that you mentioned I noticed that the old macosx interface also used the flag to get main thread. Thanks you for the help. Juho From sebastien-devel at celeos.eu Thu Jun 17 17:48:00 2010 From: sebastien-devel at celeos.eu (=?iso-8859-1?b?U+liYXN0aWVu?= Escudier) Date: Thu, 17 Jun 2010 17:48:00 +0200 Subject: [vlc-devel] [PATCH] fix a crash in live555 on stream close Message-ID: <1276789680.4c1a43b05c1f2@imp.celeos.eu> Hi, There is a bug in live555.cpp when the demuxer is closed. teardownMediaSession may call StreamClose, but teardownMediaSession is called after live_track_t is freed. So we access invalid memory in StreamClose. I can see two solutions (implemented in the patches attached) : - We don't need to pass live_track_t to StreamClose. Instead we can pass p_demux. - We could first close live555 library and then delete the tracks. Don't know which solution is better, so I send them both. Regards, Seb. -------------- next part -------------- A non-text attachment was scrubbed... Name: 0001-Fix-a-crash-in-live555-demuxer-on-close_1.patch Type: text/x-diff Size: 2023 bytes Desc: not available URL: -------------- next part -------------- A non-text attachment was scrubbed... Name: 0001-fix-a-crash-in-live555-demuxer-on-close_2.patch Type: text/x-diff Size: 1740 bytes Desc: not available URL: From remi at remlab.net Thu Jun 17 22:26:47 2010 From: remi at remlab.net (=?UTF-8?Q?R=C3=A9mi_Denis-Courmont?=) Date: Thu, 17 Jun 2010 22:26:47 +0200 Subject: [vlc-devel] Running interface on the main thread In-Reply-To: <484E172E-BD4B-41BB-8E15-357C1A9BFE40@iki.fi> References: <484E172E-BD4B-41BB-8E15-357C1A9BFE40@iki.fi> Message-ID: <9440d8eb0ddd886cabdfa59c75404417@chewa.net> On Thu, 17 Jun 2010 10:25:08 +0300, Juho V?h?-Herttua wrote: > I want to experiment a bit with running the Qt4 interface on Mac. > Originally I had Qt4 binaries compiled with Carbon (old 32-bit MacOS based > GUI framework) and it worked somewhat, but crashed from time to time and > there was no video. With Laurent's help I fixed the vout module to work > with Qt4 but that required the latest Qt4 binaries compiled with Cocoa (the > NeXTStep based GUI framework, default now). I ran into a major issue with > it though: > > The Cocoa framework main loop wants to be run on the main thread. VLC > right now spawns a new thread for interface and calls > QCoreApplication::exec there, which seems to break. Is there any > possibility to move the interface code into the main thread? I am totally not going to hack the VLC core because of a MacOS mis-design. > Right now the main() is in sigwait() state. > Even Qt4 documentation seems to always refer QCoreApplication::exec > running in the main() function, I think there's a > possibility that this might cause problems on other systems as well. To achieve this in a clean and safe manner, qvlc would have to be an independent application running on top of LibVLC. As an added bonus this would tremendously simplify the playlist management. It would be a huge amount of work. But J-B has consistently opposed this change, so it is a moot question. -- R?mi Denis-Courmont http://www.remlab.net http://fi.linkedin.com/in/remidenis From jb at videolan.org Thu Jun 17 22:52:49 2010 From: jb at videolan.org (Jean-Baptiste Kempf) Date: Thu, 17 Jun 2010 22:52:49 +0200 Subject: [vlc-devel] Running interface on the main thread In-Reply-To: <9440d8eb0ddd886cabdfa59c75404417@chewa.net> References: <484E172E-BD4B-41BB-8E15-357C1A9BFE40@iki.fi> <9440d8eb0ddd886cabdfa59c75404417@chewa.net> Message-ID: <20100617205249.GA32089@videolan.org> On Thu, Jun 17, 2010 at 10:26:47PM +0200, R?mi Denis-Courmont wrote : > It would be a huge amount of work. But J-B has consistently opposed this > change, so it is a moot question. Yes/No. I don't oppose the change, I said that I wouldn't do it. Who would then? GUIs are boring, boring and boring to do, and to polish. The choice would have been clever when changing from wx to Qt|Gtk. Now, I believe this is too late and won't improve the user experience... It might have been a good idea, I don't say else. libVLC is so far so limited (I have done 3 libVLC applications so far, and seen the phonon-VLC work closely) that so many dialogs are very complex to do (extended, messages, mediainfo, bookmarks, SD, effects!, tracks synchro and so on). The VLC framework does a lot of things, and the GUI does the mapping between everyone, so it is even more difficult. The fact that the brand-new classy Lunettes has moved from libvlc to libvlccore proves just a bit more my point. To finish, I believe we can fix the OSX GUI without changing the core, and we should do that. Let's not troll too much on that, anyway, the slow work on Lunettes proves a bit more my point. Doing interfaces is boring, grateless and not fun. The normal OSX gui can be fixed, if someone really wants it. Best Regards, -- Jean-Baptiste Kempf http://www.jbkempf.com/ From juhovh at iki.fi Thu Jun 17 23:33:25 2010 From: juhovh at iki.fi (=?iso-8859-1?Q?Juho_V=E4h=E4-Herttua?=) Date: Fri, 18 Jun 2010 00:33:25 +0300 Subject: [vlc-devel] Running interface on the main thread In-Reply-To: <20100617205249.GA32089@videolan.org> References: <484E172E-BD4B-41BB-8E15-357C1A9BFE40@iki.fi> <9440d8eb0ddd886cabdfa59c75404417@chewa.net> <20100617205249.GA32089@videolan.org> Message-ID: On 17.6.2010, at 23.52, Jean-Baptiste Kempf wrote: > On Thu, Jun 17, 2010 at 10:26:47PM +0200, R?mi Denis-Courmont wrote : >> It would be a huge amount of work. But J-B has consistently opposed this >> change, so it is a moot question. > > Yes/No. I don't oppose the change, I said that I wouldn't do it. Who > would then? GUIs are boring, boring and boring to do, and to polish. I come from the XMMS2 world, a project that has lost a lot of its small momentum during last one or two years. The main reason? There's no good GUI that everyone could use and that would work without problems. The APIs are very simple, easy, and powerful. This results in everyone hacking together what they need and not making an effort on a good user interface. In short, really good API with no standard user interface is going to be a failure. :P Having GUI as a module that attaches itself to the "daemon" library sounds horrible, to be honest, but if it works for VLC and makes people work on a good GUI, then great! > To finish, I believe we can fix the OSX GUI without changing the core, > and we should do that. The old OSX GUI uses the hack mentioned earlier by Erwan, it steals the whole main thread from VLC and happily runs its own main loop there. That's what I just did with the Qt4 interface in my tree and it happily steals the VLC main thread now on OSX. Downside is that everything that's supposed to happen after opening the interface never executes, but apparently VLC has been able to live with it before... If someone removes that hack, then Mac interface as a module is not possible and it's only Lunettes left, but at its current state I'd rather have options. And no matter what people say, I actually kind of liked the old OSX interface. :) > Let's not troll too much on that, anyway, the slow work on Lunettes > proves a bit more my point. Doing interfaces is boring, grateless and not fun. I completely agree on that. > The normal OSX gui can be fixed, if someone really wants it. I think it probably shouldn't be that hard either, just have to replace the vout, everything else compiled the last time I checked. And the current macosx vout module seems a bit overly simple, so that might have to be extended first. Juho From dilaroga at gmail.com Fri Jun 18 00:33:22 2010 From: dilaroga at gmail.com (Dilaroga Dev) Date: Fri, 18 Jun 2010 00:33:22 +0200 Subject: [vlc-devel] [PATCH] gui/macosx: fixes equalizer issue #3718. In-Reply-To: <20100616163642.GA31897@videolan.org> References: <20100616163642.GA31897@videolan.org> Message-ID: <0026CE43-01FB-4D01-867B-6EAFE58ABFA3@gmail.com> On Jun 16, 2010, at 6:36 PM, Jean-Baptiste Kempf wrote: > On Wed, Jun 16, 2010 at 01:14:21PM +0200, Dilaroga dev wrote : >> In attachment a patch that fixes equalizer issue on macosx ( vlc-1.1 branch >> ). > Applied. Ticket reopened... Second attempt to not ignore the checkbox value that indicates whether the equalizer is enabled. -- Sebastien Zwickert -------------- next part -------------- A non-text attachment was scrubbed... Name: 0006-gui-macosx-second-attempt-to-fix-equalizer-issue-3.patch Type: application/octet-stream Size: 935 bytes Desc: not available URL: From dilaroga at gmail.com Fri Jun 18 00:39:57 2010 From: dilaroga at gmail.com (Dilaroga Dev) Date: Fri, 18 Jun 2010 00:39:57 +0200 Subject: [vlc-devel] gui/macosx: set URL instead of path to ITEM_URL. Fixes #3706 Message-ID: <14470E18-514F-4E2D-876A-E00AF11EADF6@gmail.com> Hi, Patch in attachment. -- Sebastien Zwickert. -------------- next part -------------- A non-text attachment was scrubbed... Name: 0007-gui-macosx-set-URL-instead-of-path-to-ITEM_URL.-Fix.patch Type: application/octet-stream Size: 3398 bytes Desc: not available URL: -------------- next part -------------- From jb at videolan.org Fri Jun 18 01:15:55 2010 From: jb at videolan.org (Jean-Baptiste Kempf) Date: Fri, 18 Jun 2010 01:15:55 +0200 Subject: [vlc-devel] [PATCH] gui/macosx: fixes equalizer issue #3718. In-Reply-To: <0026CE43-01FB-4D01-867B-6EAFE58ABFA3@gmail.com> References: <20100616163642.GA31897@videolan.org> <0026CE43-01FB-4D01-867B-6EAFE58ABFA3@gmail.com> Message-ID: <20100617231555.GA2392@videolan.org> On Fri, Jun 18, 2010 at 12:33:22AM +0200, Dilaroga Dev wrote : > Second attempt to not ignore the checkbox value that indicates whether the equalizer is enabled. Cool. Applied again. I hope you are right, but... Best Regards, -- Jean-Baptiste Kempf http://www.jbkempf.com/ From jb at videolan.org Fri Jun 18 01:16:05 2010 From: jb at videolan.org (Jean-Baptiste Kempf) Date: Fri, 18 Jun 2010 01:16:05 +0200 Subject: [vlc-devel] gui/macosx: set URL instead of path to ITEM_URL. Fixes #3706 In-Reply-To: <14470E18-514F-4E2D-876A-E00AF11EADF6@gmail.com> References: <14470E18-514F-4E2D-876A-E00AF11EADF6@gmail.com> Message-ID: <20100617231605.GB2392@videolan.org> On Fri, Jun 18, 2010 at 12:39:57AM +0200, Dilaroga Dev wrote : > Patch in attachment. Applied. -- Jean-Baptiste Kempf http://www.jbkempf.com/ From rem at videolan.org Fri Jun 18 04:04:42 2010 From: rem at videolan.org (=?utf-8?q?R=C3=A9mi?= Denis-Courmont) Date: Fri, 18 Jun 2010 05:04:42 +0300 Subject: [vlc-devel] VLC 1.0 series End of Life Message-ID: <201006180504.42482.rem@videolan.org> Hello, The official release of VLC media player and LibVLC version 1.1.0 is coming to a close. The badly stretched VLC development team is not currently able to maintain more than two development branches at a time. The team has been focusing on the VLC 1.2 future series and the VLC 1.1 stable series. As a consequence, source code for VLC 1.0 is not officially unmaintained anymore. There will be no further security or major bug fixes. The last version was 1.0.6 and will be marked formally obsolete if/when a major issue is discovered. I would also like to remind you that: - the LibVLC API is known to be broken in all 1.0.x releases, - that the Mozilla plugin is broken on X11 platforms in release 1.0.6, and - that binary packages (Windows, MacOS) have already been discontinued. If you need any of these, please update to VLC 1.1.0-RC3 already, or 1.1.0 at the earliest. N.B.: VLC 1.0.5, 0.9.10, 0.8.6i and older versions exhibit known published security issues. Update urgently if you have not already done so. Best regards, -- R?mi Denis-Courmont From jain.parveen01 at gmail.com Fri Jun 18 08:39:03 2010 From: jain.parveen01 at gmail.com (parveen jain) Date: Fri, 18 Jun 2010 12:09:03 +0530 Subject: [vlc-devel] How many simultaneous calls are possible using H263 and PCMU Message-ID: Hi All, Just wanted to know how many simulate nous calls are possible from VLC using "h263 +PCMU stream" on a dual core system.The media file I have already have H263 and PCMU data so there is no Transcoding happening al runtime.Also what would be RAM requirements for higer no. of such calls. If there is any such document mentioning such details, that will be of great help. Regards, Parveen Jain -------------- next part -------------- An HTML attachment was scrubbed... URL: From xxcv07 at gmail.com Fri Jun 18 09:01:24 2010 From: xxcv07 at gmail.com (xxcv) Date: Fri, 18 Jun 2010 17:01:24 +1000 Subject: [vlc-devel] VLC 1.0 series End of Life In-Reply-To: <201006180504.42482.rem@videolan.org> References: <201006180504.42482.rem@videolan.org> Message-ID: <4C1B19C4.7030506@gmail.com> On 18/06/2010 12:04 PM, R?mi Denis-Courmont wrote: > Hello, > > The official release of VLC media player and LibVLC version 1.1.0 is coming to a > close. The badly stretched VLC development team is not currently able to > maintain more than two development branches at a time. The team has been > focusing on the VLC 1.2 future series and the VLC 1.1 stable series. > > As a consequence, source code for VLC 1.0 is not officially unmaintained > anymore. There will be no further security or major bug fixes. The last version > was 1.0.6 and will be marked formally obsolete if/when a major issue is > discovered. I would also like to remind you that: > - the LibVLC API is known to be broken in all 1.0.x releases, > - that the Mozilla plugin is broken on X11 platforms in release 1.0.6, and > - that binary packages (Windows, MacOS) have already been discontinued. > > If you need any of these, please update to VLC 1.1.0-RC3 already, or 1.1.0 at > the earliest. > > N.B.: VLC 1.0.5, 0.9.10, 0.8.6i and older versions exhibit known published > security issues. Update urgently if you have not already done so. > > Best regards, > Hi, Finally for this call. All good! And 1.1 has been a long long way since VLC was developed 12 years ago. Truly you guys have done well, not only that but it still isn't perfect. Anyhow, I was in lost touch with the source code for few months. I'd like to add I hate the QT interface of 1.1. Reasons been. 1. Too many hacking. 2. Too messy coding. 3. Too much confusions. 4. Too little development (except the playlist). JB, what have you been doing all this time QT needs you! Aren't you a bit of a slacker. (just joking...) Qt module is just about fine/ok/good/normal/pass (at least it is free). And I'd like to congratulate you guys on good jobs well done in the core. I sincerely hope it is to be improved much. Thank you very much, again truely on your spirits (VLC never gave up!) to developing a great multimedia application. Best Regards, xxcv From jb at videolan.org Fri Jun 18 09:08:47 2010 From: jb at videolan.org (Jean-Baptiste Kempf) Date: Fri, 18 Jun 2010 09:08:47 +0200 Subject: [vlc-devel] VLC 1.0 series End of Life In-Reply-To: <4C1B19C4.7030506@gmail.com> References: <201006180504.42482.rem@videolan.org> <4C1B19C4.7030506@gmail.com> Message-ID: <20100618070847.GA25182@videolan.org> On Fri, Jun 18, 2010 at 05:01:24PM +1000, xxcv wrote : > I'd like to add I hate the QT interface of 1.1. ... > Reasons been. > 1. Too many hacking. Reasons? facts? > 2. Too messy coding. Reasons? facts? > 3. Too much confusions. Reasons? facts? > 4. Too little development (except the playlist). man git log... > JB, what have you been doing all this time QT needs you! Aren't you a > bit of a slacker. (just joking...) Qt module is just about > fine/ok/good/normal/pass (at least it is free). Well, as you might have seen, I have spent a lot of time doing win32 fixes, VideoLAN administration and bugtracking/squashing... The Qt interface has evolved quite a bit and the code is quite clean (except the hatred qt4.cpp) The main_interface layout and code is complex but clean and many evolution have crept in. I wanted to finish the evolutions, but unfortunately, no time to. Best Regards, -- Jean-Baptiste Kempf http://www.jbkempf.com/ From xxcv07 at gmail.com Fri Jun 18 09:58:27 2010 From: xxcv07 at gmail.com (xxcv) Date: Fri, 18 Jun 2010 17:58:27 +1000 Subject: [vlc-devel] VLC 1.0 series End of Life In-Reply-To: <20100618070847.GA25182@videolan.org> References: <201006180504.42482.rem@videolan.org> <4C1B19C4.7030506@gmail.com> <20100618070847.GA25182@videolan.org> Message-ID: <4C1B2723.8000101@gmail.com> On 18/06/2010 5:08 PM, Jean-Baptiste Kempf wrote: > On Fri, Jun 18, 2010 at 05:01:24PM +1000, xxcv wrote : >> I'd like to add I hate the QT interface of 1.1. > ... > >> Reasons been. >> 1. Too many hacking. > Reasons? facts? > >> 2. Too messy coding. > Reasons? facts? > >> 3. Too much confusions. > Reasons? facts? > >> 4. Too little development (except the playlist). > man git log... > >> JB, what have you been doing all this time QT needs you! Aren't you a >> bit of a slacker. (just joking...) Qt module is just about >> fine/ok/good/normal/pass (at least it is free). > > Well, as you might have seen, I have spent a lot of time doing win32 > fixes, VideoLAN administration and bugtracking/squashing... > > The Qt interface has evolved quite a bit and the code is quite clean > (except the hatred qt4.cpp) > The main_interface layout and code is complex but clean and many > evolution have crept in. > > I wanted to finish the evolutions, but unfortunately, no time to. My friend! Do you know what I did here? I keep reverting commits well at least I think that commit is gonna break my code. That is to say break seem bad to me so I keep revert commits after commits after then I really feeling sick. Of course after I revert the ones that I don't like oh, you guys have made too many changes and now it breaks even more then (the revert Ok scenario.) Anyway I was only talking about say (lots of months ago) Yeah, I know you did hard work on these features for the graphical interface. Thanks to you and lots of other developers of Qt. All I'm to say is that I haven't been expecting this good or at least I was expecting better. Anyways I was only ranting on about something which wrong is right and right is wrong, I like the way you act in my comments which "facts" are good! Yeah I know, at least VLC is seems heaps a lot better then other software. Actually. Best Regards, xxcv (the mentally disconnected retard) From xxcv07 at gmail.com Fri Jun 18 11:14:55 2010 From: xxcv07 at gmail.com (xxcv) Date: Fri, 18 Jun 2010 19:14:55 +1000 Subject: [vlc-devel] VLC 1.0 series End of Life In-Reply-To: <20100618070847.GA25182@videolan.org> References: <201006180504.42482.rem@videolan.org> <4C1B19C4.7030506@gmail.com> <20100618070847.GA25182@videolan.org> Message-ID: <4C1B390F.1070005@gmail.com> On 18/06/2010 5:08 PM, Jean-Baptiste Kempf wrote: > On Fri, Jun 18, 2010 at 05:01:24PM +1000, xxcv wrote : >> I'd like to add I hate the QT interface of 1.1. > ... > >> Reasons been. >> 1. Too many hacking. > Reasons? facts? Means I don't like it. > >> 2. Too messy coding. > Reasons? facts? I don't like it again. > >> 3. Too much confusions. > Reasons? facts? I was confused because you guys did it the other way round I think. > >> 4. Too little development (except the playlist). > man git log... Yes I read that. BTW, forgot tell you, I revert your code, no offense because I don't like it. It was around this same time last year I switched to vlc w64 binary + ffmpeg-mt working together! I still like VLC nevertheless. Good Job! Best Regards, xxcv From jb at videolan.org Fri Jun 18 11:22:54 2010 From: jb at videolan.org (Jean-Baptiste Kempf) Date: Fri, 18 Jun 2010 11:22:54 +0200 Subject: [vlc-devel] VLC 1.0 series End of Life In-Reply-To: <4C1B390F.1070005@gmail.com> References: <201006180504.42482.rem@videolan.org> <4C1B19C4.7030506@gmail.com> <20100618070847.GA25182@videolan.org> <4C1B390F.1070005@gmail.com> Message-ID: <20100618092254.GA23266@videolan.org> On Fri, Jun 18, 2010 at 07:14:55PM +1000, xxcv wrote : >>> Reasons been. >>> 1. Too many hacking. >> Reasons? facts? > Means I don't like it. >> >>> 2. Too messy coding. >> Reasons? facts? > I don't like it again. >> >>> 3. Too much confusions. >> Reasons? facts? > I was confused because you guys did it the other way round I think. >> >>> 4. Too little development (except the playlist). >> man git log... > Yes I read that. > BTW, forgot tell you, I revert your code, no offense because I don't > like it. Maybe if you stop reverting the code, you might like it... -- Jean-Baptiste Kempf http://www.jbkempf.com/ From ileoo at videolan.org Fri Jun 18 11:24:31 2010 From: ileoo at videolan.org (Ilkka Ollakka) Date: Fri, 18 Jun 2010 12:24:31 +0300 Subject: [vlc-devel] VLC 1.0 series End of Life In-Reply-To: <4C1B390F.1070005@gmail.com> References: <201006180504.42482.rem@videolan.org> <4C1B19C4.7030506@gmail.com> <20100618070847.GA25182@videolan.org> <4C1B390F.1070005@gmail.com> Message-ID: <20100618092430.GA7981@linux-3azp> On Fri, Jun 18, 2010 at 07:14:55PM +1000, xxcv wrote: > On 18/06/2010 5:08 PM, Jean-Baptiste Kempf wrote: > >On Fri, Jun 18, 2010 at 05:01:24PM +1000, xxcv wrote : > >>I'd like to add I hate the QT interface of 1.1. > >... I would like to say, that bad trolling is bad.. > >>Reasons been. > >>1. Too many hacking. > >Reasons? facts? > Means I don't like it. Please make specific points on what you don't like, send patches to fix them. Making vague claims without anything to back it up is just bad trolling. > >>3. Too much confusions. > >Reasons? facts? > I was confused because you guys did it the other way round I think. We can't take responsibility of your confusion.. -- Ilkka Ollakka Bizoos, n.: The millions of tiny individual bumps that make up a basketball. -- Rich Hall, "Sniglets" -------------- next part -------------- A non-text attachment was scrubbed... Name: not available Type: application/pgp-signature Size: 490 bytes Desc: not available URL: From xxcv07 at gmail.com Fri Jun 18 11:31:29 2010 From: xxcv07 at gmail.com (xxcv) Date: Fri, 18 Jun 2010 19:31:29 +1000 Subject: [vlc-devel] VLC 1.0 series End of Life In-Reply-To: <20100618092430.GA7981@linux-3azp> References: <201006180504.42482.rem@videolan.org> <4C1B19C4.7030506@gmail.com> <20100618070847.GA25182@videolan.org> <4C1B390F.1070005@gmail.com> <20100618092430.GA7981@linux-3azp> Message-ID: <4C1B3CF1.4090502@gmail.com> HI Ilkka Ollakka: On 18/06/2010 7:24 PM, Ilkka Ollakka wrote: > On Fri, Jun 18, 2010 at 07:14:55PM +1000, xxcv wrote: >> On 18/06/2010 5:08 PM, Jean-Baptiste Kempf wrote: >>> On Fri, Jun 18, 2010 at 05:01:24PM +1000, xxcv wrote : >>>> I'd like to add I hate the QT interface of 1.1. >>> ... > > I would like to say, that bad trolling is bad.. mate, I'm not trying to troll... I tried my life for playing with VLC.. (no trolling) > >>>> Reasons been. >>>> 1. Too many hacking. >>> Reasons? facts? >> Means I don't like it. > > Please make specific points on what you don't like, send patches to fix > them. Making vague claims without anything to back it up is just bad > trolling. I am not trying to claim anything, that's all my feelings, btw am not trying to troll also. However my points might not be specific to your development but that's just my personal opinions. > >>>> 3. Too much confusions. >>> Reasons? facts? >> I was confused because you guys did it the other way round I think. > > We can't take responsibility of your confusion.. Ya, I can tell. Best Regards, Some random vlc hacker in the universe. From xxcv07 at gmail.com Fri Jun 18 11:34:51 2010 From: xxcv07 at gmail.com (xxcv) Date: Fri, 18 Jun 2010 19:34:51 +1000 Subject: [vlc-devel] VLC 1.0 series End of Life In-Reply-To: <20100618092254.GA23266@videolan.org> References: <201006180504.42482.rem@videolan.org> <4C1B19C4.7030506@gmail.com> <20100618070847.GA25182@videolan.org> <4C1B390F.1070005@gmail.com> <20100618092254.GA23266@videolan.org> Message-ID: <4C1B3DBB.1040400@gmail.com> On 18/06/2010 7:22 PM, Jean-Baptiste Kempf wrote: > On Fri, Jun 18, 2010 at 07:14:55PM +1000, xxcv wrote : >>>> Reasons been. >>>> 1. Too many hacking. >>> Reasons? facts? >> Means I don't like it. >>> >>>> 2. Too messy coding. >>> Reasons? facts? >> I don't like it again. >>> >>>> 3. Too much confusions. >>> Reasons? facts? >> I was confused because you guys did it the other way round I think. >>> >>>> 4. Too little development (except the playlist). >>> man git log... >> Yes I read that. >> BTW, forgot tell you, I revert your code, no offense because I don't >> like it. > > Maybe if you stop reverting the code, you might like it... > > Hmm, good try to make me, to like your qt4 code.. I remember you I think some 12 years ago, I ask a question in IRC it was you who has trying to help me! (nope, I'm not trying to Troll on your list, jk) Best Regards. From bjorn at haxx.se Fri Jun 18 13:52:27 2010 From: bjorn at haxx.se (bjorn at haxx.se) Date: Fri, 18 Jun 2010 13:52:27 +0200 Subject: [vlc-devel] [PATCH] Don't fill region if page_state == 0 In-Reply-To: <20100616052043.GC28104@linux-3azp> References: <20100616052043.GC28104@linux-3azp> Message-ID: <1276861947-13317-1-git-send-email-bjorn@haxx.se> From: Bj?rn Stenberg My interpretation of ETSI EN 300 743 is that the region_fill_flag of a region composition segment should not cause the region to be overwritten when the containing page composition segment has its' page_state variable set to 0 (page update). --- modules/codec/dvbsub.c | 10 ++++++++-- 1 files changed, 8 insertions(+), 2 deletions(-) diff --git a/modules/codec/dvbsub.c b/modules/codec/dvbsub.c index fb7619c..9dda6f6 100644 --- a/modules/codec/dvbsub.c +++ b/modules/codec/dvbsub.c @@ -806,6 +806,7 @@ static void decode_page_composition( decoder_t *p_dec, bs_t *s ) p_sys->p_page->i_version = i_version; p_sys->p_page->i_timeout = i_timeout; + p_sys->p_page->i_state = i_state; p_sys->b_page = true; /* Number of regions */ @@ -840,7 +841,8 @@ static void decode_region_composition( decoder_t *p_dec, bs_t *s ) int i_segment_length, i_processed_length, i_id, i_version; int i_width, i_height, i_level_comp, i_depth, i_clut; int i_8_bg, i_4_bg, i_2_bg; - bool b_fill; + bool b_region_fill, b_fill = false; + dvbsub_page_t *p_page = p_sys->p_page; i_segment_length = bs_read( s, 16 ); i_id = bs_read( s, 8 ); @@ -877,7 +879,7 @@ static void decode_region_composition( decoder_t *p_dec, bs_t *s ) /* Region attributes */ p_region->i_id = i_id; p_region->i_version = i_version; - b_fill = bs_read( s, 1 ); + b_region_fill = bs_read( s, 1 ); bs_skip( s, 3 ); /* Reserved */ i_width = bs_read( s, 16 ); @@ -917,6 +919,10 @@ static void decode_region_composition( decoder_t *p_dec, bs_t *s ) p_region->i_depth = 0; b_fill = true; } + else + if (b_region_fill && p_page->i_state != 0) + b_fill = true; + if( p_region->i_depth && ( ( p_region->i_depth != i_depth ) || ( p_region->i_level_comp != i_level_comp ) || -- 1.7.1 From binny at infiniteit.biz Fri Jun 18 11:38:35 2010 From: binny at infiniteit.biz (Binny Shah) Date: Fri, 18 Jun 2010 15:08:35 +0530 Subject: [vlc-devel] Understanding the source code Message-ID: Hi, I need to understand the source code of vlc for a project of mine. Can you please guide me on where to start ? -------------- next part -------------- An HTML attachment was scrubbed... URL: From kaarlo.raiha at gmail.com Fri Jun 18 17:43:57 2010 From: kaarlo.raiha at gmail.com (=?ISO-8859-1?B?S2FhcmxvIFLkaWjk?=) Date: Fri, 18 Jun 2010 18:43:57 +0300 Subject: [vlc-devel] Understanding the source code In-Reply-To: References: Message-ID: You might want to specify what part you exactly want to understand. For programming tips/tutorials check out http://wiki.videolan.org/Developers_Corner 2010/6/18 Binny Shah > Hi, > I need to understand the source code of vlc for a project of mine. Can > you please guide me on where to start ? > > _______________________________________________ > vlc-devel mailing list > To unsubscribe or modify your subscription options: > http://mailman.videolan.org/listinfo/vlc-devel > > -------------- next part -------------- An HTML attachment was scrubbed... URL: From jakob.leben at gmail.com Fri Jun 18 18:12:25 2010 From: jakob.leben at gmail.com (Jakob Leben) Date: Fri, 18 Jun 2010 18:12:25 +0200 Subject: [vlc-devel] [vlc-commits] commit: Qt4: don' t do playlist_model recursive remove as core signals for those anyway ( Ilkka Ollakka ) In-Reply-To: <20100618123546.1A369F5AEC@albiero.videolan.org> References: <20100618123546.1A369F5AEC@albiero.videolan.org> Message-ID: On Fri, Jun 18, 2010 at 2:35 PM, wrote: > vlc | branch: master | Ilkka Ollakka | Fri Jun 18 > 15:35:04 2010 +0300| [926bbf142f297f9715e3cc5ad746b98a448c3451] | committer: > Ilkka Ollakka > > Qt4: don't do playlist_model recursive remove as core signals for those > anyway > > + * Lets not worry about nodes children, we do refersh anyway when > + * core tells that playlist has changed, should give some more speed > Speed? I am sure it's faster that PLModel::recurseDelete() removes items to delete from the selected list, than making a route through the core back to Qt for every of those items (thus searching by ID at the core side and again back at the Qt side). -------------- next part -------------- An HTML attachment was scrubbed... URL: From jakob.leben at gmail.com Fri Jun 18 18:14:04 2010 From: jakob.leben at gmail.com (Jakob Leben) Date: Fri, 18 Jun 2010 18:14:04 +0200 Subject: [vlc-devel] [vlc-commits] commit: Qt4: don' t do playlist_model recursive remove as core signals for those anyway ( Ilkka Ollakka ) In-Reply-To: References: <20100618123546.1A369F5AEC@albiero.videolan.org> Message-ID: On Fri, Jun 18, 2010 at 6:12 PM, Jakob Leben wrote: > On Fri, Jun 18, 2010 at 2:35 PM, wrote: > >> vlc | branch: master | Ilkka Ollakka | Fri Jun 18 >> 15:35:04 2010 +0300| [926bbf142f297f9715e3cc5ad746b98a448c3451] | committer: >> Ilkka Ollakka >> >> Qt4: don't do playlist_model recursive remove as core signals for those >> anyway >> >> + * Lets not worry about nodes children, we do refersh anyway when >> + * core tells that playlist has changed, should give some more speed >> > > > Speed? I am sure it's faster that PLModel::recurseDelete() removes items to > delete from the selected list, than making a route through the core back to > Qt for every of those items (thus searching by ID at the core side and again > back at the Qt side). > Plus, your commit makes more playlist lockings than before, so it is less efficient in that sense as well. -------------- next part -------------- An HTML attachment was scrubbed... URL: From xtophe at chewa.net Fri Jun 18 20:15:36 2010 From: xtophe at chewa.net (Christophe Mutricy) Date: Fri, 18 Jun 2010 20:15:36 +0200 Subject: [vlc-devel] VLC 1.1.0 Message-ID: <20100618181536.GJ30509@chewa.net> Hello, VLC 1.1.0 is very likely to be released sunday night (european time). So it's a good time to send your translations. Sadly due to some oversight from me and lack of time last week, I only realized yesterday that some strings for some minor filter where forgotten. Also I might not have watch the other developers closely enough and there might be modification in 1 or 2 strings. Sorry about that. So if you could please redownload your po file from http://git.videolan.org/gitweb.cgi?p=vlc/vlc-1.1.git;a=tree;f=po (clicking on 'raw') before doing final modification/checking. Sorry for the late notice. But if we trust the history of VLC 0.9.0 and 1.0.0, VLC 1.1.1 should be released pretty soon after 1.0.0. So that would allow us to fix if needed. Best regards, -- Xtophe From pfactum at gmail.com Fri Jun 18 20:45:10 2010 From: pfactum at gmail.com (Oleksandr Natalenko) Date: Fri, 18 Jun 2010 21:45:10 +0300 Subject: [vlc-devel] VLC 1.1.0 In-Reply-To: <20100618181536.GJ30509@chewa.net> References: <20100618181536.GJ30509@chewa.net> Message-ID: <201006182145.10427.pfactum@gmail.com> Hi! > VLC 1.1.0 is very likely to be released sunday night (european time). > > So it's a good time to send your translations. Ok, I've done it, grab it from attach. Hope, it'll be included in release. Regards, Oleksandr. -------------- next part -------------- A non-text attachment was scrubbed... Name: uk.tar.bz2 Type: application/x-bzip-compressed-tar Size: 332657 bytes Desc: not available URL: From btsimonh at googlemail.com Fri Jun 18 23:13:43 2010 From: btsimonh at googlemail.com (simon h) Date: Fri, 18 Jun 2010 22:13:43 +0100 Subject: [vlc-devel] [PATCH] dvbsub.c : Don't fill region if page_state == 0 Message-ID: Bj?rn wrote: > You can look at region_fill_flag as either a function call or a style indicator. If you see it as a function call, the> decoder should fill the region every time it sees the flag. However, paragraph "5.3.4 Region fill" says: > Where the region fill flag is set, the region fill in the subtitle decoder > model happens before any objects are rendered into the region. > This suggests that the decoder should not fill a region after it has had objects rendered onto it. Alternatively, that> if you refill the region you must re-render the objects. > And this fits rather well with viewing the flag as a style indicator instead, meaning "this region should have a fille> d background." Any subsequent "normal case" packets hence naturally have the flag set too, since the style has not cha> nged. from 5.1.5 Region composition: "The value of the region_n-bit_pixel_code shall not change in RCS where the region_fill_flag is not set. This allows decoders that have already acquired the subtitling service to ignore the region_n-bit_pixel_code when the region_fill_flag is not set. A decoder in the process of acquiring the service can rely on the region_n-bit_pixel_code being the current region fill colour regardless of the state of region_fill_flag." This indicates that the fill flag is designed to be set once to cause a fill, and then cleared. If a decoder acquires the service and a region is 'new' to the decoder, it should fill with the existing colour. This indicates that a regions is ALWAYS filled when first encountered (used, actually) (i.e. if you want it transparent, set a transparent colour...), and the fill flag is used to indicate the packet in which it is wished for this to occur. All regions have a 'style' of 'filled' :) Since regions can be removed from display, filled, and then re-revealed, then the ability to clear them on demand is essential. '5.4.3 Region Fill' also states: "Setting the region fill flag instructs that the region is to be completely re-drawn with the defined fill colour." Again, this indicates the 'command' interpretation rather than the 'style indicator' interpretation. Simon -------------- next part -------------- An HTML attachment was scrubbed... URL: From xslidian at gmail.com Sat Jun 19 07:32:25 2010 From: xslidian at gmail.com (Dean Lee) Date: Sat, 19 Jun 2010 13:32:25 +0800 Subject: [vlc-devel] VLC 1.1.0 In-Reply-To: <20100618181536.GJ30509@chewa.net> References: <20100618181536.GJ30509@chewa.net> Message-ID: Hi, Xtophe, Great to hear that. The updated Chinese Simp translation is always available at: http://2.xslidian.sinaapp.com/VLC-1.1-zh_CN.zip Ps I could not connect to nightlies.videolan.org now, but the previous builds seem OK. :) Best wishes, Dean On Sat, Jun 19, 2010 at 2:15 AM, Christophe Mutricy wrote: > > Hello, > > VLC 1.1.0 is very likely to be released sunday night (european time). > > So it's a good time to send your translations. > > Sadly due to some oversight from me and lack of time last week, I only > realized yesterday that some strings for some minor filter where > forgotten. Also I might not have watch the other developers closely > enough and there might be modification in 1 or 2 strings. > Sorry about that. > > > So if you could please redownload your po file from > http://git.videolan.org/gitweb.cgi?p=vlc/vlc-1.1.git;a=tree;f=po > (clicking on 'raw') before doing final modification/checking. > > Sorry for the late notice. But if we trust the history of VLC 0.9.0 and > 1.0.0, VLC 1.1.1 should be released pretty soon after 1.0.0. So that > would allow us to fix if needed. > > > Best regards, > > -- > Xtophe > From antonin at delpeuch.eu Sat Jun 19 14:59:00 2010 From: antonin at delpeuch.eu (Antonin Delpeuch) Date: Sat, 19 Jun 2010 14:59:00 +0200 Subject: [vlc-devel] [Question] PCM encoding with transcode Message-ID: <4C1CBF14.20500@delpeuch.eu> Hi all, I'm trying to know how to read the data coming from smem's output (I only handle sound). -> Is this PCM output signed ? The data array has (uint8_t*) for type, but I don't think it mean anything since the data can also be encoded on 16 bits. -> How to know which channel each set of samples belongs to ? The callback has a "channels" parameter, but according to my tests, it only mean the number of channels and not the current one. Actually this depends more on transcode than on smem, but I didn't find any info about this raw encoding on the wiki. I hope I'm not too annoying (that's not my first noob question about smem), but I'm currently writing a page on the wiki, explaining how to use smem, so the answers can be useful for everybody. Thanks ! From ileoo at videolan.org Sun Jun 20 12:33:10 2010 From: ileoo at videolan.org (Ilkka Ollakka) Date: Sun, 20 Jun 2010 13:33:10 +0300 Subject: [vlc-devel] [vlc-commits] commit: Qt4: don' t do playlist_model recursive remove as core signals for those anyway ( Ilkka Ollakka ) In-Reply-To: References: <20100618123546.1A369F5AEC@albiero.videolan.org> Message-ID: <20100620103310.GB14576@linux-3azp> On Fri, Jun 18, 2010 at 06:14:04PM +0200, Jakob Leben wrote: > On Fri, Jun 18, 2010 at 6:12 PM, Jakob Leben wrote: > > Speed? I am sure it's faster that PLModel::recurseDelete() removes items to > > delete from the selected list, than making a route through the core back to > > Qt for every of those items (thus searching by ID at the core side and again > > back at the Qt side). Ah yes, for some reason I read that code wrongly and thought it did something else. -- Ilkka Ollakka Nondeterminism means never having to say you are wrong. -------------- next part -------------- A non-text attachment was scrubbed... Name: not available Type: application/pgp-signature Size: 490 bytes Desc: not available URL: From rob at hobbyistsoftware.com Sun Jun 20 12:51:08 2010 From: rob at hobbyistsoftware.com (Rob) Date: Sun, 20 Jun 2010 11:51:08 +0100 Subject: [vlc-devel] [PATCH] gui/macosx: create a preferences file when first run. In-Reply-To: References: <20100616164121.GA1210@videolan.org> Message-ID: Hi Folks, any chance of getting this patch approved before the release? current versions of VLC all create a preference file when first run on Mac. The rc currently does not. This is a pain for my app which does a user-friendly setup of VLC so that it exposes the http interface (also adjusts the .hosts file, etc). (users use this to set up VLC for use with VLC remote) If the patch isn't approved, then I'll need to release a new helper app which has a default copy of preferences and creates them if necessary before modifying them. Not a huge job - but creates an unpleasant duplication of default prefs in my third party tool. cheers, Rob On Wed, 16 Jun 2010 23:52:39 +0100, Dilaroga Dev wrote: > > On Jun 16, 2010, at 6:41 PM, Jean-Baptiste Kempf wrote: > >> On Wed, Jun 16, 2010 at 01:19:12PM +0200, Dilaroga dev wrote : >>> In attachment a patch that creates a preferences file at launch time >>> when >>> the vlcrc file doesn't exist yet. >>> This patch closes #3684. >> >> Is this really the right place to do it? > > gui/qt4 does it in FirstRun::save(). gui/macosx hasn't firstrun > detection implemented that's why i check if the config file exists. > >> Souldn't this be fixed in the core? > > I don't know if all interfaces need to create a default configuration > file at the first launch if the file doesn't yet exist. > >> What happens if you start vlc with -Irc the first time? > > The config file is not created. > > > -- > Sebastien Zwickert > _______________________________________________ > vlc-devel mailing list > To unsubscribe or modify your subscription options: > http://mailman.videolan.org/listinfo/vlc-devel From jb at videolan.org Sun Jun 20 13:34:52 2010 From: jb at videolan.org (Jean-Baptiste Kempf) Date: Sun, 20 Jun 2010 13:34:52 +0200 Subject: [vlc-devel] [PATCH] gui/macosx: create a preferences file when first run. In-Reply-To: References: <20100616164121.GA1210@videolan.org> Message-ID: <20100620113452.GA14553@videolan.org> On Sun, Jun 20, 2010 at 11:51:08AM +0100, Rob wrote : > any chance of getting this patch approved before the release? No. Patch is wrong. Won't be applied. From YairH at optibase.com Sun Jun 20 14:57:05 2010 From: YairH at optibase.com (Yair Han) Date: Sun, 20 Jun 2010 15:57:05 +0300 Subject: [vlc-devel] Missing time indication Message-ID: Hello all, I noticed that sometimes the time indication of the length and current time position of a video asset is missing. Can you confirm and elaborate on why? I took a TS MPEG2 video file that showed the time I re-muxed (demux -> Mux -> saved to a file) it and the time indication was lost. No decoding, No encoding, No padding added etc' just remux. Thanks, Yair Han Software Engineer EZTV Client Team Leader Optibase Ltd. Tel: +972-9-9709259 yairh at optibase.com -------------- next part -------------- An HTML attachment was scrubbed... URL: From ajmas at sympatico.ca Sun Jun 20 15:35:50 2010 From: ajmas at sympatico.ca (Andre-John Mas) Date: Sun, 20 Jun 2010 09:35:50 -0400 Subject: [vlc-devel] [PATCH] gui/macosx: create a preferences file when first run. In-Reply-To: <20100616164121.GA1210@videolan.org> References: <20100616164121.GA1210@videolan.org> Message-ID: On 16-Jun-2010, at 12:41, Jean-Baptiste Kempf wrote: > On Wed, Jun 16, 2010 at 01:19:12PM +0200, Dilaroga dev wrote : >> In attachment a patch that creates a preferences file at launch time when >> the vlcrc file doesn't exist yet. >> This patch closes #3684. > > Is this really the right place to do it? > > Souldn't this be fixed in the core? > What happens if you start vlc with -Irc the first time? In this regards, we should be asking what level is currently responsible for creating the preferences file? If it is the core then it should be there. If on the other hand it is the higher level VLC application, then it should be there. Its a question of trying to keep things consistent. Andr? From rem at videolan.org Sun Jun 20 18:19:30 2010 From: rem at videolan.org (=?iso-8859-1?q?R=E9mi?= Denis-Courmont) Date: Sun, 20 Jun 2010 19:19:30 +0300 Subject: [vlc-devel] =?iso-8859-1?q?=5BPATCH=5D_gui/macosx=3A_create_a_pre?= =?iso-8859-1?q?ferences_file_when=09first_run=2E?= In-Reply-To: References: <20100616164121.GA1210@videolan.org> Message-ID: <201006201919.30750.rem@videolan.org> On Sunday 20 June 2010 16:35:50 Andre-John Mas, you wrote: > On 16-Jun-2010, at 12:41, Jean-Baptiste Kempf wrote: > > On Wed, Jun 16, 2010 at 01:19:12PM +0200, Dilaroga dev wrote : > >> In attachment a patch that creates a preferences file at launch time > >> when the vlcrc file doesn't exist yet. > >> This patch closes #3684. > > > > Is this really the right place to do it? > > > > Souldn't this be fixed in the core? > > What happens if you start vlc with -Irc the first time? > > In this regards, we should be asking what level is currently responsible > for creating the preferences file? Saving the configuration should be avoided, unless the user explicitly asked for it. The Qt4 first run save has caused scores of issues in the past. Replicating that mistake is not a good idea. The core will update the automatically saved configuration items at exit, if any of them were modified. The interface should save the configuration if and only if the user requested so (i.e. pressed the Save button). > If it is the core then it should be there. No. > If on the other hand it is the higher level VLC application, LibVLC applications are not supposed to use the configuration in the first place. This is really a VLC media player thing, and it is not even exposed in the current LibVLC API. It is not accident that "ignore-config" is true by default. > then it should be there. Its a question of trying to keep things > consistent. -- R?mi Denis-Courmont From rem at videolan.org Sun Jun 20 18:22:05 2010 From: rem at videolan.org (=?iso-8859-1?q?R=E9mi?= Denis-Courmont) Date: Sun, 20 Jun 2010 19:22:05 +0300 Subject: [vlc-devel] [PATCH] gui/macosx: create a preferences file when first run. In-Reply-To: References: Message-ID: <201006201922.05683.rem@videolan.org> On Sunday 20 June 2010 13:51:08 Rob, you wrote: > If the patch isn't approved, then I'll need to release a new helper app > which has a default copy of preferences and creates them if necessary > before modifying them. That won't be difficult, considering that the default vlcrc is essentially an empty file. -- R?mi Denis-Courmont From jmenon86 at gmail.com Sun Jun 20 18:38:22 2010 From: jmenon86 at gmail.com (Jai Menon) Date: Sun, 20 Jun 2010 22:08:22 +0530 Subject: [vlc-devel] [PATCH 1/2] AVFormat Demuxer : Set video ES frame rate. Message-ID: <1277051903-8439-1-git-send-email-jmenon86@gmail.com> --- modules/demux/avformat/demux.c | 2 ++ 1 files changed, 2 insertions(+), 0 deletions(-) diff --git a/modules/demux/avformat/demux.c b/modules/demux/avformat/demux.c index 3b5454b..98d857c 100644 --- a/modules/demux/avformat/demux.c +++ b/modules/demux/avformat/demux.c @@ -281,6 +281,8 @@ int OpenDemux( vlc_object_t *p_this ) *fmt.video.p_palette = *(video_palette_t *)cc->palctrl; } psz_type = "video"; + fmt.video.i_frame_rate = cc->time_base.den; + fmt.video.i_frame_rate_base = cc->time_base.num; break; case CODEC_TYPE_SUBTITLE: -- 1.7.1 From jmenon86 at gmail.com Sun Jun 20 18:38:23 2010 From: jmenon86 at gmail.com (Jai Menon) Date: Sun, 20 Jun 2010 22:08:23 +0530 Subject: [vlc-devel] [PATCH 2/2] AVFormat Demuxer : Set fourcc based on source container. In-Reply-To: <1277051903-8439-1-git-send-email-jmenon86@gmail.com> References: <1277051903-8439-1-git-send-email-jmenon86@gmail.com> Message-ID: <1277051903-8439-2-git-send-email-jmenon86@gmail.com> This is required for those containers which mux the AVCDecoderConfigurationRecord as private/extra data so that the AVC packetizer works correctly. --- modules/demux/avformat/demux.c | 4 ++++ 1 files changed, 4 insertions(+), 0 deletions(-) diff --git a/modules/demux/avformat/demux.c b/modules/demux/avformat/demux.c index 98d857c..eaeca80 100644 --- a/modules/demux/avformat/demux.c +++ b/modules/demux/avformat/demux.c @@ -283,6 +283,10 @@ int OpenDemux( vlc_object_t *p_this ) psz_type = "video"; fmt.video.i_frame_rate = cc->time_base.den; fmt.video.i_frame_rate_base = cc->time_base.num; + if( cc->codec_id == CODEC_ID_H264 && ( !strcmp( p_sys->fmt->name, "flv" ) || + !strcmp( p_sys->fmt->name, "matroska" ) || !strcmp( p_sys->fmt->name, "mp4" ) ) ) + fmt.i_original_fourcc = VLC_FOURCC( 'a', 'v', 'c', '1' ); + break; case CODEC_TYPE_SUBTITLE: -- 1.7.1 From kaarlo.raiha at gmail.com Sun Jun 20 18:49:53 2010 From: kaarlo.raiha at gmail.com (=?ISO-8859-1?B?S2FhcmxvIFLkaWjk?=) Date: Sun, 20 Jun 2010 19:49:53 +0300 Subject: [vlc-devel] Missing time indication In-Reply-To: References: Message-ID: VLC cannot parse duration of .(M2)TS files. This might change at some point. 2010/6/20 Yair Han > Hello all, > > > > I noticed that sometimes the time indication of the length and current time > position of a video asset is missing. Can you confirm and elaborate on why? > > I took a TS MPEG2 video file that showed the time I re-muxed (demux -> Mux > -> saved to a file) it and the time indication was lost. No decoding, No > encoding, No padding added etc' just remux. > > > > Thanks, > > Yair Han > > Software Engineer > > EZTV Client Team Leader > > Optibase Ltd. > > Tel: +972-9-9709259 > > yairh at optibase.com > > > > _______________________________________________ > vlc-devel mailing list > To unsubscribe or modify your subscription options: > http://mailman.videolan.org/listinfo/vlc-devel > > -------------- next part -------------- An HTML attachment was scrubbed... URL: From fumio.n6a at gmail.com Sat Jun 19 17:26:11 2010 From: fumio.n6a at gmail.com (Fumio Nakayama) Date: Sun, 20 Jun 2010 00:26:11 +0900 Subject: [vlc-devel] VLC 1.1.0 In-Reply-To: <20100618181536.GJ30509@chewa.net> References: <20100618181536.GJ30509@chewa.net> Message-ID: Hi Christophe, Thank you working on this hardly. I updated the following files. Please use the following files. http://www.n6a.net/vlc/1.1.0rc/ja.po http://www.n6a.net/vlc/1.1.0rc/japanese-sjis.nsh (native coding for Japanese Windows) http://www.n6a.net/vlc/1.1.0rc/japanese-utf8.nsh (UTF8 coding for reference) The latest ja.po file was fully translated. It contains 5441 messages. $ LANG=C msgfmt --statistics -v -o vlc.mo ja.po 5441 translated messages. best regards, Fumio Nakayama 2010/6/19 Christophe Mutricy : > > Hello, > > VLC 1.1.0 is very likely to be released sunday night (european time). > > So it's a good time to send your translations. > > Sadly due to some oversight from me and lack of time last week, I only > realized yesterday that some strings for some minor filter where > forgotten. Also I might not have watch the other developers closely > enough and there might be modification in 1 or 2 strings. > Sorry about that. > > > So if you could please redownload your po file from > http://git.videolan.org/gitweb.cgi?p=vlc/vlc-1.1.git;a=tree;f=po > (clicking on 'raw') before doing final modification/checking. > > Sorry for the late notice. But if we trust the history of VLC 0.9.0 and > 1.0.0, VLC 1.1.1 should be released pretty soon after 1.0.0. So that > would allow us to fix if needed. > > > Best regards, > > -- > Xtophe > From ppanhh at gmail.com Sun Jun 20 05:48:26 2010 From: ppanhh at gmail.com (anh phan) Date: Sat, 19 Jun 2010 20:48:26 -0700 Subject: [vlc-devel] VLC 1.1.0 In-Reply-To: <20100618181536.GJ30509@chewa.net> References: <20100618181536.GJ30509@chewa.net> Message-ID: recent weeks, i have got a serious problem. the file which u have given me-after the fixing problem, didn't display correctly the type of character in Vietnamese. I also met that problem after i choose the definition of Language into Vietnamese in the Poedit. So please, take a look a gain at the file that i send to u last time. Fix the errors, but don't apply the Vietnamese format Character in Poedit, and send it back 2 me. Thanks a lot. On 6/18/10, Christophe Mutricy wrote: > > Hello, > > VLC 1.1.0 is very likely to be released sunday night (european time). > > So it's a good time to send your translations. > > Sadly due to some oversight from me and lack of time last week, I only > realized yesterday that some strings for some minor filter where > forgotten. Also I might not have watch the other developers closely > enough and there might be modification in 1 or 2 strings. > Sorry about that. > > > So if you could please redownload your po file from > http://git.videolan.org/gitweb.cgi?p=vlc/vlc-1.1.git;a=tree;f=po > (clicking on 'raw') before doing final modification/checking. > > Sorry for the late notice. But if we trust the history of VLC 0.9.0 and > 1.0.0, VLC 1.1.1 should be released pretty soon after 1.0.0. So that > would allow us to fix if needed. > > > Best regards, > > -- > Xtophe > From jb at videolan.org Sun Jun 20 22:18:11 2010 From: jb at videolan.org (Jean-Baptiste Kempf) Date: Sun, 20 Jun 2010 22:18:11 +0200 Subject: [vlc-devel] [vlc-commits] commit: Fixed video format decoder changes detection. (Laurent Aimar ) In-Reply-To: <20100620201549.6682AF7A93@albiero.videolan.org> References: <20100620201549.6682AF7A93@albiero.videolan.org> Message-ID: <20100620201811.GA9445@videolan.org> On Sun, Jun 20, 2010 at 10:15:49PM +0200, git at videolan.org wrote : > vlc/vlc-1.1 | branch: master | Laurent Aimar | Sat Jun 19 21:40:18 2010 +0200| [08fc68fc3f8b55ec60901074ca9b85f31c089867] | committer: Jean-Baptiste Kempf > > Fixed video format decoder changes detection. Cherry-picked from [0c3870b4a44ab564574155a41d9e45010be9f25d] - Best Regards, -- Jean-Baptiste Kempf http://www.jbkempf.com/ From xtophe at videolan.org Sun Jun 20 22:47:45 2010 From: xtophe at videolan.org (Christophe Mutricy) Date: Sun, 20 Jun 2010 21:47:45 +0100 Subject: [vlc-devel] VLC 1.1.0 In-Reply-To: References: <20100618181536.GJ30509@chewa.net> Message-ID: <4C1E7E71.1060602@videolan.org> Hello, Le 20/06/2010 04:48, anh phan a ?crit : > recent weeks, i have got a serious problem. > the file which u have given me-after the fixing problem, didn't > display correctly the type of character in Vietnamese. > I also met that problem after i choose the definition of Language into > Vietnamese in the Poedit. > So please, take a look a gain at the file that i send to u last time. > Fix the errors, but don't apply the Vietnamese format Character in > Poedit, and send it back 2 me. Which operating system do you use ? In Poedit make sure that in Catalog/setting the encoding is set to UTF-8. If your default font doesn't support UTF-8 you might need to change it. -- Xtophe From logiconcepts819 at gmail.com Mon Jun 21 01:42:21 2010 From: logiconcepts819 at gmail.com (Ron Wright) Date: Sun, 20 Jun 2010 18:42:21 -0500 Subject: [vlc-devel] Dynamic range compressor patch Message-ID: Hello, I have ported the SC4 compressor from LADSPA SWH to VLC and posted the preview of the necessary patch in one of the forums. Attached is the patch that j-b requested me to post here. Regards, Ronald Wright -------------- next part -------------- An HTML attachment was scrubbed... URL: -------------- next part -------------- A non-text attachment was scrubbed... Name: vlc-compressor.patch Type: application/octet-stream Size: 34582 bytes Desc: not available URL: From YairH at optibase.com Mon Jun 21 09:51:51 2010 From: YairH at optibase.com (Yair Han) Date: Mon, 21 Jun 2010 10:51:51 +0300 Subject: [vlc-devel] Missing time indication References: Message-ID: What can I do to make it work? ________________________________ From: vlc-devel-bounces at videolan.org [mailto:vlc-devel-bounces at videolan.org] On Behalf Of Kaarlo R?ih? Sent: Sunday, June 20, 2010 7:50 PM To: Mailing list for VLC media player developers Subject: Re: [vlc-devel] Missing time indication VLC cannot parse duration of .(M2)TS files. This might change at some point. 2010/6/20 Yair Han Hello all, I noticed that sometimes the time indication of the length and current time position of a video asset is missing. Can you confirm and elaborate on why? I took a TS MPEG2 video file that showed the time I re-muxed (demux -> Mux -> saved to a file) it and the time indication was lost. No decoding, No encoding, No padding added etc' just remux. Thanks, Yair Han Software Engineer EZTV Client Team Leader Optibase Ltd. Tel: +972-9-9709259 yairh at optibase.com _______________________________________________ vlc-devel mailing list To unsubscribe or modify your subscription options: http://mailman.videolan.org/listinfo/vlc-devel -------------- next part -------------- An HTML attachment was scrubbed... URL: From ileoo at videolan.org Mon Jun 21 11:27:29 2010 From: ileoo at videolan.org (Ilkka Ollakka) Date: Mon, 21 Jun 2010 12:27:29 +0300 Subject: [vlc-devel] [vlc-commits] commit: qt4: don't add duplicate on convert if not needed (Ilkka Ollakka ) In-Reply-To: <1276441535.16276.2.camel@Nokia-N900-51-1> References: <20100613093320.EC905F3368@albiero.videolan.org> <1276441535.16276.2.camel@Nokia-N900-51-1> Message-ID: <20100621092728.GA5438@linux-3azp> On Sun, Jun 13, 2010 at 08:05:35AM -0700, R?mi Denis-Courmont wrote: > this is not terribly useful. Sout_duplicate copies streams (n_dst-1) > times, so if there is only one dst, it is basically free. Speedwise it's not that usefull, but it makes sout-syntax more simpler and that should help users to understand it more easily (and figure out whats needed and whats not). -- Ilkka Ollakka It's no surprise that things are so screwed up: everyone that knows how to run a government is either driving taxicabs or cutting hair. -- George Burns -------------- next part -------------- A non-text attachment was scrubbed... Name: not available Type: application/pgp-signature Size: 490 bytes Desc: not available URL: From kaarlo.raiha at gmail.com Mon Jun 21 13:30:52 2010 From: kaarlo.raiha at gmail.com (=?ISO-8859-1?B?S2FhcmxvIFLkaWjk?=) Date: Mon, 21 Jun 2010 14:30:52 +0300 Subject: [vlc-devel] Missing time indication In-Reply-To: References: Message-ID: If you want to add this feature to VLC, you have to find way to calculate the duration of (M2)TS files. You could borrow the code from example Mediainfo, but I would guess it wouldn't work with all access modules. 2010/6/21 Yair Han > What can I do to make it work? > > > ------------------------------ > > *From:* vlc-devel-bounces at videolan.org [mailto: > vlc-devel-bounces at videolan.org] *On Behalf Of *Kaarlo R?ih? > *Sent:* Sunday, June 20, 2010 7:50 PM > *To:* Mailing list for VLC media player developers > *Subject:* Re: [vlc-devel] Missing time indication > > > > VLC cannot parse duration of .(M2)TS files. This might change at some > point. > > 2010/6/20 Yair Han > > Hello all, > > > > I noticed that sometimes the time indication of the length and current time > position of a video asset is missing. Can you confirm and elaborate on why? > > I took a TS MPEG2 video file that showed the time I re-muxed (demux -> Mux > -> saved to a file) it and the time indication was lost. No decoding, No > encoding, No padding added etc' just remux. > > > > Thanks, > > Yair Han > > Software Engineer > > EZTV Client Team Leader > > Optibase Ltd. > > Tel: +972-9-9709259 > > yairh at optibase.com > > > > > _______________________________________________ > vlc-devel mailing list > To unsubscribe or modify your subscription options: > http://mailman.videolan.org/listinfo/vlc-devel > > > > _______________________________________________ > vlc-devel mailing list > To unsubscribe or modify your subscription options: > http://mailman.videolan.org/listinfo/vlc-devel > > -------------- next part -------------- An HTML attachment was scrubbed... URL: From gozer at progrock.com Mon Jun 21 14:52:54 2010 From: gozer at progrock.com (gozer at progrock.com) Date: Mon, 21 Jun 2010 05:52:54 -0700 Subject: [vlc-devel] vlc 1.1.0-rc on windows Message-ID: <20100621055254.485D2E2E@resin06.mta.everyone.net> Hi all, when trying to generate the windows binary (Windows/Cygwin or Linux/MingW) the following file is missing: include/vlc_windows_interfaces.h Thus compilation fails in modules/gui/qt4... -- Eric Lassauge #lassauge [at] users {dot} sf {dot} net# _____________________________________________________________ For the best in Progressive Rock on the internet, check out PROGROCK.COM! http://www.progrock.com From bjorn at haxx.se Mon Jun 21 16:02:59 2010 From: bjorn at haxx.se (=?iso-8859-1?Q?Bj=F6rn?= Stenberg) Date: Mon, 21 Jun 2010 16:02:59 +0200 Subject: [vlc-devel] [PATCH] dvbsub.c : Don't fill region if page_state == 0 In-Reply-To: References: Message-ID: <20100621140259.GC9362@giant> simon h wrote: > A decoder in the process of acquiring the > service can rely on the region_n-bit_pixel_code being the current region > fill colour regardless of the state of region_fill_flag." > > This indicates that the fill flag is designed to be set once to cause a > fill, and then cleared. If a decoder acquires the service and a region is > 'new' to the decoder, it should fill with the existing colour. Yes, but that section discusses how a decoder acts when acquiring the service. Page state "normal case" is not an acquisition point, so it does not necessarily apply. However, I struck gold in point four of "5.1.6 Points to note": "A decoder shall inspect every RCS in the display set to determine if the region is to be modified, for example, which pixel buffer modifications are required or where there is a modification to the associated CLUT family. It is sufficient for the decoder to inspect the RCS version number to determine if a region requires modification. There are three possible causes of modification, any or all of which may cause the modification: - region fill flag set; - CLUT contents modification; - a non-zero length object list." This removes all doubts in my mind. You were right, I was wrong. I thus retract my patch suggestion. Thank you. -- Bj?rn From gozer at progrock.com Mon Jun 21 16:32:54 2010 From: gozer at progrock.com (gozer at progrock.com) Date: Mon, 21 Jun 2010 07:32:54 -0700 Subject: [vlc-devel] Files missing in POTFILES.in Message-ID: <20100621073254.485D3D5A@resin06.mta.everyone.net> modules/gui/qt4/dialogs/firstrun.cpp modules/gui/qt4/dialogs/epg.cpp modules/access/attachment.c modules/access/fs.c modules/access/imem.c modules/audio_filter/audiobargraph_a.c modules/packetizer/flac.c modules/video_filter/audiobargraph_v.c modules/video_filter/ball.c -- Eric Lassauge #lassauge [at] users {dot} sf {dot} net# _____________________________________________________________ For the best in Progressive Rock on the internet, check out PROGROCK.COM! http://www.progrock.com From gozer at progrock.com Mon Jun 21 16:46:57 2010 From: gozer at progrock.com (gozer at progrock.com) Date: Mon, 21 Jun 2010 07:46:57 -0700 Subject: [vlc-devel] Files missing in POTFILES.in Message-ID: <20100621074657.485D33E5@resin06.mta.everyone.net> Sorry, forgot to mention vlc-1.1.0-rc.... BTW the file 'modules/services_discovery/xcb_apps.c' is also missing... It contains calls to _() - but I'm not sure it's used somewhere... -- Eric Lassauge #lassauge [at] users {dot} sf {dot} net# --- gozer at progrock.com wrote: From: "gozer at progrock.com" To: Subject: [vlc-devel] Files missing in POTFILES.in Date: Mon, 21 Jun 2010 07:32:54 -0700 modules/gui/qt4/dialogs/firstrun.cpp modules/gui/qt4/dialogs/epg.cpp modules/access/attachment.c modules/access/fs.c modules/access/imem.c modules/audio_filter/audiobargraph_a.c modules/packetizer/flac.c modules/video_filter/audiobargraph_v.c modules/video_filter/ball.c -- Eric Lassauge #lassauge [at] users {dot} sf {dot} net# _____________________________________________________________ For the best in Progressive Rock on the internet, check out PROGROCK.COM! http://www.progrock.com _______________________________________________ vlc-devel mailing list To unsubscribe or modify your subscription options: http://mailman.videolan.org/listinfo/vlc-devel _____________________________________________________________ For the best in Progressive Rock on the internet, check out PROGROCK.COM! http://www.progrock.com From jb at videolan.org Mon Jun 21 18:18:34 2010 From: jb at videolan.org (Jean-Baptiste Kempf) Date: Mon, 21 Jun 2010 18:18:34 +0200 Subject: [vlc-devel] Beers Message-ID: <20100621161834.GA15351@videolan.org> Hello *, I would like to suggest to everyone that is available, to come and join us to drink beers (or any other beverage) with us, to feast the release, TOMORROW, tuesday, 22 June 2010 If you are in Paris, La V?nus Noire, 25 rue de l'hirondelle 75006 Paris M? St-Michel ou Od?on Hour: 20h30~21h00 De la place St-Michel, il faut prendre la petite ruelle ? droite de la place, (dos ? la seine), ? cot? du bar "Rive Gauche". -- Jean-Baptiste Kempf http://www.jbkempf.com/ From fcvlcdev at free.fr Mon Jun 21 22:59:41 2010 From: fcvlcdev at free.fr (Francois Cartegnie) Date: Mon, 21 Jun 2010 22:59:41 +0200 Subject: [vlc-devel] SYSCONFDIR optional when looking for root certs ? Message-ID: <201006212259.41770.fcvlcdev@free.fr> Hello, TLS root certificates are curently read from: $SYSCONFDIR/ssl/certs/ca-certificates.crt This can't work with prefixed installs, unless someone thought about recreating a CA directory with the right certificates. I would suggest a small change: Look into the prefixed dir and if $SYSCONFDIR/etc/ doesn't exists, then fallback and change lookup prefix to '/' and fetch system's ones. Cons ? Francois From remi at remlab.net Mon Jun 21 23:08:49 2010 From: remi at remlab.net (=?UTF-8?Q?R=C3=A9mi_Denis-Courmont?=) Date: Mon, 21 Jun 2010 23:08:49 +0200 Subject: [vlc-devel] =?utf-8?q?SYSCONFDIR_optional_when_looking_for_root_c?= =?utf-8?q?erts_=3F?= In-Reply-To: <201006212259.41770.fcvlcdev@free.fr> References: <201006212259.41770.fcvlcdev@free.fr> Message-ID: <6ef42cad2a4261d86ab774122d1b6d79@chewa.net> On Mon, 21 Jun 2010 22:59:41 +0200, Francois Cartegnie wrote: > TLS root certificates are curently read from: > $SYSCONFDIR/ssl/certs/ca-certificates.crt > > This can't work with prefixed installs, unless someone thought about > recreating a CA directory with the right certificates. > I would suggest a small change: > Look into the prefixed dir and if $SYSCONFDIR/etc/ doesn't exists, then > fallback and change lookup prefix to '/' and fetch system's ones. That suggestion makes absolutely no sense at all. autoconf has sysconfdir to /usr/local/etc by default. Most packagers change it /etc from the configure invocation line (--sysconfdir=/etc), depending on the target system file hierarchy. -- R?mi Denis-Courmont http://www.remlab.net http://fi.linkedin.com/in/remidenis From fcvlcdev at free.fr Tue Jun 22 00:19:04 2010 From: fcvlcdev at free.fr (Francois Cartegnie) Date: Tue, 22 Jun 2010 00:19:04 +0200 Subject: [vlc-devel] SYSCONFDIR optional when looking for root certs ? In-Reply-To: <6ef42cad2a4261d86ab774122d1b6d79@chewa.net> References: <201006212259.41770.fcvlcdev@free.fr> <6ef42cad2a4261d86ab774122d1b6d79@chewa.net> Message-ID: <201006220019.04171.fcvlcdev@free.fr> Le lundi 21 juin 2010, R?mi Denis-Courmont a ?crit : > configure invocation line (--sysconfdir=/etc), depending on the target Okay, sorry, that's fine if configure handles it. Besides, there's still a need to make lookups for alternative names. Francois From xtophe at chewa.net Tue Jun 22 00:26:08 2010 From: xtophe at chewa.net (Christophe Mutricy) Date: Tue, 22 Jun 2010 00:26:08 +0200 Subject: [vlc-devel] SYSCONFDIR optional when looking for root certs ? In-Reply-To: <201006220019.04171.fcvlcdev@free.fr> References: <201006212259.41770.fcvlcdev@free.fr> <6ef42cad2a4261d86ab774122d1b6d79@chewa.net> <201006220019.04171.fcvlcdev@free.fr> Message-ID: <20100621222608.GO30509@chewa.net> On Tue, Jun 22, 10 at 00:19 +0200, Francois Cartegnie wrote: > Besides, there's still a need to make lookups for alternative names. Which are very much distro dependant. So imho that's the perfect example of where packaging patches are needed -- Xtophe From rem at videolan.org Tue Jun 22 02:53:57 2010 From: rem at videolan.org (=?iso-8859-15?q?R=E9mi?= Denis-Courmont) Date: Tue, 22 Jun 2010 03:53:57 +0300 Subject: [vlc-devel] Dynamic range compressor patch In-Reply-To: References: Message-ID: <201006220353.57723.rem@videolan.org> Hello, On Monday 21 June 2010 02:42:21 Ron Wright, you wrote: > I have ported the SC4 compressor from LADSPA SWH to VLC and posted the > preview of the necessary patch in one of the forums. Attached is the patch > that j-b requested me to post here. The code looks quite good to me! There are just a few nits: - git format patch not used, - UI part should be a separate patch, - a few trailing white spaces. Best regards, -- R?mi Denis-Courmont From logiconcepts819 at gmail.com Tue Jun 22 06:28:55 2010 From: logiconcepts819 at gmail.com (Ron Wright) Date: Mon, 21 Jun 2010 23:28:55 -0500 Subject: [vlc-devel] Dynamic range compressor patch In-Reply-To: <201006220353.57723.rem@videolan.org> References: <201006220353.57723.rem@videolan.org> Message-ID: How are these patches? Ronald Wright 2010/6/21 R?mi Denis-Courmont > Hello, > > On Monday 21 June 2010 02:42:21 Ron Wright, you wrote: > > I have ported the SC4 compressor from LADSPA SWH to VLC and posted the > > preview of the necessary patch in one of the forums. Attached is the > patch > > that j-b requested me to post here. > > The code looks quite good to me! > > There are just a few nits: > - git format patch not used, > - UI part should be a separate patch, > - a few trailing white spaces. > > Best regards, > > -- > R?mi Denis-Courmont > -------------- next part -------------- An HTML attachment was scrubbed... URL: -------------- next part -------------- A non-text attachment was scrubbed... Name: vlc-compressor-core.patch Type: application/octet-stream Size: 26384 bytes Desc: not available URL: -------------- next part -------------- A non-text attachment was scrubbed... Name: vlc-compressor-ui.patch Type: application/octet-stream Size: 7912 bytes Desc: not available URL: From sebastien-devel at celeos.eu Tue Jun 22 10:37:13 2010 From: sebastien-devel at celeos.eu (=?iso-8859-1?b?U+liYXN0aWVu?= Escudier) Date: Tue, 22 Jun 2010 10:37:13 +0200 Subject: [vlc-devel] vlc 1.1 and live555 version Message-ID: <1277195833.4c207639904f9@imp.celeos.eu> Hi, What version of live555 library is used for vlc 1.1 release ? I ask because I found several regressions recently in the library. I think we should not ship vlc 1.1 with a version of live555 between 2010.05.28 and 2010.06.18 As there is no revision control system for live555 I can't say for sure which version exactly introduced the regressions. But 2010.06.18 - 2010.05.28 versions all have some regressions (segfaults, and refusing to connect to some rtsp servers). Regards, Sebastien. From sebastien-devel at celeos.eu Tue Jun 22 11:25:25 2010 From: sebastien-devel at celeos.eu (=?iso-8859-1?b?U+liYXN0aWVu?= Escudier) Date: Tue, 22 Jun 2010 11:25:25 +0200 Subject: [vlc-devel] vlc 1.1 and live555 version In-Reply-To: <1277195833.4c207639904f9@imp.celeos.eu> References: <1277195833.4c207639904f9@imp.celeos.eu> Message-ID: <1277198725.4c20818533cae@imp.celeos.eu> Quoting S?bastien Escudier : > What version of live555 library is used for vlc 1.1 release ? Ho, I didn't see 1.1 has just been released. It seems to be 2010.03.16 so it's fine. From khoemsokhem at khmeros.info Tue Jun 22 11:31:29 2010 From: khoemsokhem at khmeros.info (Khoem Sokhem) Date: Tue, 22 Jun 2010 16:31:29 +0700 Subject: [vlc-devel] [Translators] VLC 1.1.0 In-Reply-To: <20100618181536.GJ30509@chewa.net> References: <20100618181536.GJ30509@chewa.net> Message-ID: <201006221631.29582.khoemsokhem@khmeros.info> Hello Christophe, Please take the updated translation file for Khmer (km) for vlc. http://www.4shared.com/get/322758607/b26af4b7/po_km.html Thank you very much for your work, Cheer, Sokhem > VLC 1.1.0 is very likely to be released sunday night (european time). > > So it's a good time to send your translations. > > Sadly due to some oversight from me and lack of time last week, I only > realized yesterday that some strings for some minor filter where > forgotten. Also I might not have watch the other developers closely > enough and there might be modification in 1 or 2 strings. > Sorry about that. > > > So if you could please redownload your po file from > http://git.videolan.org/gitweb.cgi?p=vlc/vlc-1.1.git;a=tree;f=po > (clicking on 'raw') before doing final modification/checking. > > Sorry for the late notice. But if we trust the history of VLC 0.9.0 and > 1.0.0, VLC 1.1.1 should be released pretty soon after 1.0.0. So that > would allow us to fix if needed. > > > Best regards, From jb at videolan.org Tue Jun 22 11:34:39 2010 From: jb at videolan.org (Jean-Baptiste Kempf) Date: Tue, 22 Jun 2010 11:34:39 +0200 Subject: [vlc-devel] Dynamic range compressor patch In-Reply-To: References: <201006220353.57723.rem@videolan.org> Message-ID: <20100622093439.GA4388@videolan.org> On Mon, Jun 21, 2010 at 11:28:55PM -0500, Ron Wright wrote : > How are these patches? Quite impressive :D Just a small remark on the UI side, you don't need this empty destructor. Best Regards, -- Jean-Baptiste Kempf http://www.jbkempf.com/ From jb at videolan.org Tue Jun 22 11:35:28 2010 From: jb at videolan.org (Jean-Baptiste Kempf) Date: Tue, 22 Jun 2010 11:35:28 +0200 Subject: [vlc-devel] vlc 1.1 and live555 version In-Reply-To: <1277198725.4c20818533cae@imp.celeos.eu> References: <1277195833.4c207639904f9@imp.celeos.eu> <1277198725.4c20818533cae@imp.celeos.eu> Message-ID: <20100622093528.GB4388@videolan.org> On Tue, Jun 22, 2010 at 11:25:25AM +0200, S?bastien Escudier wrote : > It seems to be 2010.03.16 so it's fine. Yes, on Windows, I took that old version, because I had issues with newer ones. Best Regards, -- Jean-Baptiste Kempf http://www.jbkempf.com/ From finlayson at live555.com Tue Jun 22 11:46:56 2010 From: finlayson at live555.com (Ross Finlayson) Date: Tue, 22 Jun 2010 02:46:56 -0700 Subject: [vlc-devel] vlc 1.1 and live555 version In-Reply-To: <1277195833.4c207639904f9@imp.celeos.eu> References: <1277195833.4c207639904f9@imp.celeos.eu> Message-ID: A FYI, for those of you who haven't been keeping track of recent LIVE555 developments: The RTSP client implementation underwent a major upgrade, starting with revision 2010.05.29. We now support asynchronous (i.e., non-blocking) RTSP client commands. This will significantly improve RTSP client support in future versions of VLC (and other applications), allowing RTSP commands to take place without blocking other, concurrent activities. (However, for backwards compatibility, the old synchronous RTSP client API is still available (and is implemented using the new asynchronous API), so VLC's "live555.cpp" interface code need not change right away.) As S?bastien noted, we have been shaking out some bugs with this new RTSP client implementation; however the latest version (2010.06.22) appears quite stable. -- Ross Finlayson Live Networks, Inc. http://www.live555.com/ From sebastien-devel at celeos.eu Tue Jun 22 11:53:51 2010 From: sebastien-devel at celeos.eu (=?iso-8859-1?b?U+liYXN0aWVu?= Escudier) Date: Tue, 22 Jun 2010 11:53:51 +0200 Subject: [vlc-devel] vlc 1.1 and live555 version In-Reply-To: <20100622093528.GB4388@videolan.org> References: <1277195833.4c207639904f9@imp.celeos.eu> <1277198725.4c20818533cae@imp.celeos.eu> <20100622093528.GB4388@videolan.org> Message-ID: <1277200431.4c20882f8c58f@imp.celeos.eu> Quoting Jean-Baptiste Kempf : > Yes, on Windows, I took that old version, because I had issues with > newer ones. As Ross just said, latest version should be ok. Except for one bug which should be fixed in VLC (I already sent patches for comment, I'll look again into this soon). From jb at videolan.org Tue Jun 22 11:54:53 2010 From: jb at videolan.org (Jean-Baptiste Kempf) Date: Tue, 22 Jun 2010 11:54:53 +0200 Subject: [vlc-devel] vlc 1.1 and live555 version In-Reply-To: <1277200431.4c20882f8c58f@imp.celeos.eu> References: <1277195833.4c207639904f9@imp.celeos.eu> <1277198725.4c20818533cae@imp.celeos.eu> <20100622093528.GB4388@videolan.org> <1277200431.4c20882f8c58f@imp.celeos.eu> Message-ID: <20100622095453.GA16951@videolan.org> On Tue, Jun 22, 2010 at 11:53:51AM +0200, S?bastien Escudier wrote : > Quoting Jean-Baptiste Kempf : > > > Yes, on Windows, I took that old version, because I had issues with > > newer ones. > > As Ross just said, latest version should be ok. Except for one bug which should > be fixed in VLC (I already sent patches for comment, I'll look again into this > soon). If you don't mind, I would need a bit more than "should be ok" for a major VLC release... Best Regards, -- Jean-Baptiste Kempf http://www.jbkempf.com/ From ppanhh at gmail.com Tue Jun 22 09:14:52 2010 From: ppanhh at gmail.com (anh phan) Date: Tue, 22 Jun 2010 14:14:52 +0700 Subject: [vlc-devel] VLC 1.1.0 In-Reply-To: <4C1E7E71.1060602@videolan.org> References: <20100618181536.GJ30509@chewa.net> <4C1E7E71.1060602@videolan.org> Message-ID: Win7, but i also got the same problem when i used XP with poedit -------------- next part -------------- An HTML attachment was scrubbed... URL: From srikiraju at gmail.com Mon Jun 21 19:53:35 2010 From: srikiraju at gmail.com (Srikanth Raju) Date: Mon, 21 Jun 2010 23:23:35 +0530 Subject: [vlc-devel] Media library Include file and Core Message-ID: Hello, I have attached two patches. I will merge these into master by Wednesday if nobody has any problems with them. These are the include files and some minor changes to the core. -- Regards, Srikanth Raju -------------- next part -------------- An HTML attachment was scrubbed... URL: -------------- next part -------------- A non-text attachment was scrubbed... Name: 0001-ML-Include-Media-Library-header.patch Type: text/x-patch Size: 50681 bytes Desc: not available URL: -------------- next part -------------- A non-text attachment was scrubbed... Name: 0002-ML-Media-Library-Core.patch Type: text/x-patch Size: 22198 bytes Desc: not available URL: From fumio.n6a at gmail.com Tue Jun 22 04:26:44 2010 From: fumio.n6a at gmail.com (Fumio Nakayama) Date: Tue, 22 Jun 2010 11:26:44 +0900 (JST) Subject: [vlc-devel] VLC 1.1.0 In-Reply-To: References: <20100618181536.GJ30509@chewa.net> Message-ID: <20100622.112644.1723218899.fumio.n6a@gmail.com> Hi Christophe, Thank you very much for your hard work for releasing VLC 1.1.0!! Fumio Nakayama From fenrir at elivagar.org Tue Jun 22 12:44:21 2010 From: fenrir at elivagar.org (Laurent Aimar) Date: Tue, 22 Jun 2010 12:44:21 +0200 Subject: [vlc-devel] Media library Include file and Core In-Reply-To: References: Message-ID: <20100622104421.GA18596@elivagar.org> On Mon, Jun 21, 2010 at 11:23:35PM +0530, Srikanth Raju wrote: > Hello, > I have attached two patches. I will merge these into master by Wednesday if > nobody has any problems with them. These are the include files and some minor > changes to the core. I would really prefer if you could wait longer, ie at least until monday. There is a lot of changes to review, and one day is far from being enough for everyone to have a look and to do a review properly. Regards, -- fenrir From srikiraju at gmail.com Tue Jun 22 12:51:20 2010 From: srikiraju at gmail.com (Srikanth Raju) Date: Tue, 22 Jun 2010 16:21:20 +0530 Subject: [vlc-devel] Media library Include file and Core In-Reply-To: <20100622104421.GA18596@elivagar.org> References: <20100622104421.GA18596@elivagar.org> Message-ID: On Tue, Jun 22, 2010 at 4:14 PM, Laurent Aimar wrote: > On Mon, Jun 21, 2010 at 11:23:35PM +0530, Srikanth Raju wrote: > > Hello, > > I have attached two patches. I will merge these into master by Wednesday > if > > nobody has any problems with them. These are the include files and some > minor > > changes to the core. > I would really prefer if you could wait longer, ie at least until monday. > There is a lot of changes to review, and one day is far from being enough > for > everyone to have a look and to do a review properly. > > I will wait. But these two patches have already been reviewed a few times by courmisch, ivoire and j-peg, and all suggested changes have been included. > Regards, > > -- > fenrir > PS: Looks like I forgot the [PATCH] tag in the subject. Apologies. -- Regards, Srikanth Raju -------------- next part -------------- An HTML attachment was scrubbed... URL: From jakob.leben at gmail.com Tue Jun 22 13:33:00 2010 From: jakob.leben at gmail.com (Jakob Leben) Date: Tue, 22 Jun 2010 13:33:00 +0200 Subject: [vlc-devel] Media library Include file and Core In-Reply-To: References: Message-ID: On Mon, Jun 21, 2010 at 7:53 PM, Srikanth Raju wrote: > Hello, > I have attached two patches. I will merge these into master by Wednesday if > nobody has any problems with them. These are the include files and some > minor changes to the core. > Hi, Srikanth, Maybe I'm a bit late, but I have a couple of conceptual questions about this, so please enlighten me: I was wondering what is the reasoning behind adding all the information fields like artist, album, track number, etc. to ml_media_t instead of re-using vlc_meta_t (or developing it, if it is not sufficient) ? For that matter, couldn't an input_item_t be used on the place of ml_media_t? Or is the idea for development just the opposite, to remove that information from input_item_t, once the new ML is done? Cheers, Jakob -------------- next part -------------- An HTML attachment was scrubbed... URL: From ajmas at sympatico.ca Tue Jun 22 13:42:48 2010 From: ajmas at sympatico.ca (Andre-John Mas) Date: Tue, 22 Jun 2010 07:42:48 -0400 Subject: [vlc-devel] VLC Forums outage page? Message-ID: Hi, Because of the new release of 1.1.0 the forums are currently down. Some users may be asking what's going on, so I was wondering whether it would be possible to put an outage page explaining the situation on the forum server? Andr? From srikiraju at gmail.com Tue Jun 22 14:10:13 2010 From: srikiraju at gmail.com (Srikanth Raju) Date: Tue, 22 Jun 2010 17:40:13 +0530 Subject: [vlc-devel] Media library Include file and Core In-Reply-To: References: Message-ID: On Tue, Jun 22, 2010 at 5:03 PM, Jakob Leben wrote: > On Mon, Jun 21, 2010 at 7:53 PM, Srikanth Raju wrote: > >> Hello, >> I have attached two patches. I will merge these into master by Wednesday >> if nobody has any problems with them. These are the include files and some >> minor changes to the core. >> > > > Hi, Srikanth, > > Maybe I'm a bit late, but I have a couple of conceptual questions about > this, so please enlighten me: > > I was wondering what is the reasoning behind adding all the information > fields like artist, album, track number, etc. to ml_media_t instead of > re-using vlc_meta_t (or developing it, if it is not sufficient) ? > For that matter, couldn't an input_item_t be used on the place of > ml_media_t? > > This was much argued over last year. We decided that input_item_t and vlc_meta_t will represent information that can be obtained from the file directly and ml_media_t will be what is stored in the sql database. There are numerous reasons for this * input_item_t can represent streams, read only files, etc, and editing media information and storing it may not always be possible. In cases where the file is modifiable, formats may not support specific meta data. Handling this would be overly complicated, cumbersome, with all sorts of format specific hacks needed. * the current vlc_meta_t scheme doesn't support all the metadata we want or would like in the future. Having a new structure that is free from the format will make the data structure much more flexible. * We don't want to mess with any current functionality, so it's best to keep those working functions there, for now. * There is a lot of metadata, and this might increase. We don't want to load all that information if the user isn't using the media library. Or is the idea for development just the opposite, to remove that information > from input_item_t, once the new ML is done? I suspect this is what will eventually happen, only for the metadata in input_item_t ofcourse. > Cheers, > > Jakob > > _______________________________________________ > vlc-devel mailing list > To unsubscribe or modify your subscription options: > http://mailman.videolan.org/listinfo/vlc-devel > > -- Regards, Srikanth Raju -------------- next part -------------- An HTML attachment was scrubbed... URL: From sebastien-devel at celeos.eu Tue Jun 22 12:00:48 2010 From: sebastien-devel at celeos.eu (=?iso-8859-1?b?U+liYXN0aWVu?= Escudier) Date: Tue, 22 Jun 2010 12:00:48 +0200 Subject: [vlc-devel] vlc 1.1 and live555 version In-Reply-To: <20100622095453.GA16951@videolan.org> References: <1277195833.4c207639904f9@imp.celeos.eu> <1277198725.4c20818533cae@imp.celeos.eu> <20100622093528.GB4388@videolan.org> <1277200431.4c20882f8c58f@imp.celeos.eu> <20100622095453.GA16951@videolan.org> Message-ID: <1277200848.4c2089d0b5459@imp.celeos.eu> Quoting Jean-Baptiste Kempf : > If you don't mind, I would need a bit more than "should be ok" for a > major VLC release... I didn't say we should blindly use it in next major vlc release. But at least, every bug I noted are fixed. I am still testing, and others devs are welcome to do it also. From remi at remlab.net Tue Jun 22 22:33:40 2010 From: remi at remlab.net (=?UTF-8?Q?R=C3=A9mi_Denis-Courmont?=) Date: Tue, 22 Jun 2010 22:33:40 +0200 Subject: [vlc-devel] =?utf-8?q?=5Bvlc-commits=5D_commit=3A_lua=3A_add_vlc?= =?utf-8?q?=2Estrings=2Eiconv_to_use_vlc=5Ficonv=2C_shouldn=27t_eat_kitten?= =?utf-8?q?s___=28Ilkka_Ollakka_=29?= In-Reply-To: <20100622194858.69BD7F7A25@albiero.videolan.org> References: <20100622194858.69BD7F7A25@albiero.videolan.org> Message-ID: <50daed100d28b8ed7cb6106145cf0c65@chewa.net> On Tue, 22 Jun 2010 21:48:58 +0200 (CEST), git at videolan.org wrote: > + i_ret = vlc_iconv( iconv_handle, &psz_input , > + &i_in_bytes, &psz_output, &i_out_bytes ); > + *psz_output = '\0'; I suspect an off-by-one overflow right there. -- R?mi Denis-Courmont http://www.remlab.net http://fi.linkedin.com/in/remidenis From ileoo at videolan.org Tue Jun 22 22:44:02 2010 From: ileoo at videolan.org (Ilkka Ollakka) Date: Tue, 22 Jun 2010 23:44:02 +0300 Subject: [vlc-devel] [vlc-commits] commit: lua: add vlc.strings.iconv to use vlc_iconv, shouldn't eat kittens (Ilkka Ollakka ) In-Reply-To: <50daed100d28b8ed7cb6106145cf0c65@chewa.net> References: <20100622194858.69BD7F7A25@albiero.videolan.org> <50daed100d28b8ed7cb6106145cf0c65@chewa.net> Message-ID: <20100622204401.GB24990@linux-3azp> On Tue, Jun 22, 2010 at 10:33:40PM +0200, R?mi Denis-Courmont wrote: > I suspect an off-by-one overflow right there. I think its in right place, atleast I didn't notice any extra/missing characters on output. -- Ilkka Ollakka A "No" uttered from deepest conviction is better and greater than a "Yes" merely uttered to please, or what is worse, to avoid trouble. -- Mahatma Ghandi -------------- next part -------------- A non-text attachment was scrubbed... Name: not available Type: application/pgp-signature Size: 490 bytes Desc: not available URL: From stuart8c at gmail.com Wed Jun 23 14:40:44 2010 From: stuart8c at gmail.com (Stuart Cunningham) Date: Wed, 23 Jun 2010 22:40:44 +1000 Subject: [vlc-devel] Getting both audio and video playout for Blackmagic Design Decklink/Intensity Message-ID: Hi, I'm writing a video output module for Blackmagic Design's Decklink & Intensity cards. So far I have video playout over SDI and HDMI working fine, but the difficulty I have now is getting audio playout working as well. The code I've added resides in a new file modules/video_output/decklink.cpp where the Decklink API is initialized and used for video playback. The problem with audio is that it's going to be available only in an audio output module e.g. modules/audio_output/decklink.cpp but this code won't be able to access the object created in modules/video_output/decklink.cpp. You can only have one instance of a Decklink board object, so how would I share an object created in a video_output module with code in an audio_output module? An alternative would be to somehow have modules/video_output/decklink.cpp handle both audio and video data for output, but I'm not sure the internal design of VLC allows this. Regards, Stuart -------------- next part -------------- An HTML attachment was scrubbed... URL: From ajmas at sympatico.ca Wed Jun 23 14:59:26 2010 From: ajmas at sympatico.ca (Andre-John Mas) Date: Wed, 23 Jun 2010 08:59:26 -0400 Subject: [vlc-devel] Trac issue - can't search Message-ID: Hi, Trac appears to have a small issue. When I try searching for anything I get the following error: "Unsupported version control system "svn": Can't find an appropriate component, maybe the corresponding plugin was not enabled?" Andre From kaarlo.raiha at gmail.com Wed Jun 23 17:26:13 2010 From: kaarlo.raiha at gmail.com (=?ISO-8859-1?B?S2FhcmxvIFLkaWjk?=) Date: Wed, 23 Jun 2010 18:26:13 +0300 Subject: [vlc-devel] Trac issue - can't search In-Reply-To: References: Message-ID: http://trac.videolan.org/vlc/query that usually works when basic search doesn't. 2010/6/23 Andre-John Mas > Hi, > > Trac appears to have a small issue. When I try searching for anything I get > the following error: > > "Unsupported version control system "svn": Can't find an appropriate > component, maybe the corresponding plugin was not enabled?" > > Andre > _______________________________________________ > vlc-devel mailing list > To unsubscribe or modify your subscription options: > http://mailman.videolan.org/listinfo/vlc-devel > -------------- next part -------------- An HTML attachment was scrubbed... URL: From jakob.leben at gmail.com Wed Jun 23 18:36:21 2010 From: jakob.leben at gmail.com (Jakob Leben) Date: Wed, 23 Jun 2010 18:36:21 +0200 Subject: [vlc-devel] [vlc-commits] commit: Qt4: reset current_index cache sametime as i_cache_id ( Ilkka Ollakka ) In-Reply-To: <20100623121009.589B4F91CE@albiero.videolan.org> References: <20100623121009.589B4F91CE@albiero.videolan.org> Message-ID: On Wed, Jun 23, 2010 at 2:10 PM, wrote: > vlc | branch: master | Ilkka Ollakka | Wed Jun 23 > 15:09:53 2010 +0300| [7cdb0761b23277f508cefeb5dca4098c9ec4120d] | committer: > Ilkka Ollakka > > Qt4: reset current_index cache sametime as i_cache_id > A QModelIndex can become invalid even in case when cached PLItem is still valid. For example on D&D move. QModelIndex is not permanent, so would be better to not cache it at all. If anything, input_item_t * should be cached. Caching of current item in qt4 has recently been removed in development between 1.0.0 and 1.1.0. If you want to know last played item after playing is stopped, then instead of caching, why not ask the playlist directly? If playlist can stop and then continue playing from last played item, then for sure it has the info about the last played item. Best regards, Jakob -------------- next part -------------- An HTML attachment was scrubbed... URL: From remi at remlab.net Wed Jun 23 19:07:22 2010 From: remi at remlab.net (=?UTF-8?Q?R=C3=A9mi_Denis-Courmont?=) Date: Wed, 23 Jun 2010 19:07:22 +0200 Subject: [vlc-devel] Trac issue - can't search In-Reply-To: References: Message-ID: <3a5f5cd35e22ddaf35243fce47385f5b@chewa.net> On Wed, 23 Jun 2010 08:59:26 -0400, Andre-John Mas wrote: > Hi, > > Trac appears to have a small issue. When I try searching for anything I > get the following error: > > "Unsupported version control system "svn": Can't find an appropriate > component, maybe the corresponding plugin was not enabled?" That's only one side of a set of problems, i.e. that git integration in Trac sucks big time. * Unconfirmed and confirmed bugs are not distinguishable by state. * There is no way to unsubscribe from a bug report. * Platform selection should be a set check boxes, not a single choice list. * Integration with commit logs does not work (anymore). * The wiki is totally useless. * It is slow. * It cannot remember your credentials. * Normal users should not be allowed to change priority and severity. * The completion field is useless. But for the most part, it comes down to Trac being an agile software development ticketing system rather than a bug tracker. Lets face it, there is no way in hell that VLC will ever follow agile practices. For that, we would need to know the time commitment of the key developers, and a manager owner would need authority over what needs to be worked on (in what order). That does not really fly in a hobbyists project. -- R?mi Denis-Courmont http://www.remlab.net http://fi.linkedin.com/in/remidenis From remi at remlab.net Wed Jun 23 19:10:34 2010 From: remi at remlab.net (=?UTF-8?Q?R=C3=A9mi_Denis-Courmont?=) Date: Wed, 23 Jun 2010 19:10:34 +0200 Subject: [vlc-devel] Getting both audio and video playout for Blackmagic Design Decklink/Intensity In-Reply-To: References: Message-ID: <61084219e3865d68248fb8d0716e7ee5@chewa.net> On Wed, 23 Jun 2010 22:40:44 +1000, Stuart Cunningham wrote: > The problem with audio is that it's going to be available only in an audio > output module e.g. modules/audio_output/decklink.cpp but this code won't > be able to access the object created in modules/video_output/decklink.cpp. > You can only have one instance of a Decklink board object, so how would I > share an object created in a video_output module with code in an audio_output > module? The simplest solution is to implement both modules in the same plugin, and share the data via static variables (and a static lock). But that may cause problem if (Lib)VLC has more than one playing media at a time. > An alternative would be to somehow have modules/video_output/decklink.cpp > handle both audio and video data for output, but I'm not sure the internal > design of VLC allows this. Just grep for add_submodule. -- R?mi Denis-Courmont http://www.remlab.net http://fi.linkedin.com/in/remidenis From joshua.allmann at gmail.com Wed Jun 23 23:54:24 2010 From: joshua.allmann at gmail.com (Josh Allmann) Date: Wed, 23 Jun 2010 14:54:24 -0700 Subject: [vlc-devel] ffmpeg rtsp access demuxer In-Reply-To: References: Message-ID: On 11 June 2010 22:53, Josh Allmann wrote: > Hello, > > Here is a first attempt at integrating the RTSP layer from ffmpeg. It > does so by adding an access demuxer to the VLC scaffolding for > libavformat. > > All the major transports are working (udp, tcp, rtsp-http). I have not > yet looked at features like auth or muxing, but I can do that once I > know this patch is on the right track. > > Josh > Congrats on 1.1... and ping. From frank.enderle at anamica.de Thu Jun 24 00:38:38 2010 From: frank.enderle at anamica.de (Frank Enderle) Date: Thu, 24 Jun 2010 00:38:38 +0200 Subject: [vlc-devel] [PATCH] 1-of-3: vlc-1.1.0 network poll timeout Message-ID: <4C228CEE.3080607@anamica.de> Hi, I'd like to subit the following patch against the VLC-1.1.0 release. ----- Summary Give net_Read and net_Write awareness of the --ipv4-timeout option Description This patch introduces the --ipv4-timeout option to net_Read and net_Write. This enables the http access module to detect timeout in receiving packets. Without this patch the http access module waits an infinite amount of time and never detects a broken stream once the data is not flowing in. ----- Cheers, Frank -- Dipl.-Ing. (FH) Frank Enderle anamica UG (haftungsbeschr?nkt) Beinsteinerstr. 6 71334 Waiblingen Telefon: +49 151 14981091 Telefax: +49 7151 1335770 E-Mail: frank.enderle at anamica.de Internet: www.anamica.de Handelsregister: AG Stuttgart HRB 732357 Gesch?ftsf?hrer: Yvonne Holzwarth, Frank Enderle -------------- next part -------------- An embedded and charset-unspecified text was scrubbed... Name: vlc-1.1.0-poll-timeout.diff URL: From frank.enderle at anamica.de Thu Jun 24 00:38:42 2010 From: frank.enderle at anamica.de (Frank Enderle) Date: Thu, 24 Jun 2010 00:38:42 +0200 Subject: [vlc-devel] [PATCH] 2-of-3: vlc-1.1.0 video adjust patch Message-ID: <4C228CF2.7020906@anamica.de> Hi, I'd like to subit the following patch against the VLC-1.1.0 release. ----- Summary Add adjust filter features to libvlc_media_player/libvlc_video Description This patch exposes the adjust module to libvlc_media_player/libvlc_video and adds a frequently requested featureset: to manipulate brightness, contrast, gamma, saturation and hue through libvlc. The patch introduces a new set of functions analogous to libvlc_video_{get,set}_{marq,logo}_*, hence the use of the function set should be self explanatory. New Functions: * value = libvlc_video_get_adjust_int( p_mi, option ); * libvlc_video_set_adjust_int( p_mi, option, value ); * value = libvlc_video_get_adjust_float( p_mi, option ); * libvlc_video_set_adjust_float( p_mi, option, value ); New Options: * libvlc_adjust_Enable * libvlc_adjust_Contrast * libvlc_adjust_Brightness * libvlc_adjust_Hue * libvlc_adjust_Saturation * libvlc_adjust_Gamma ----- Cheers, Frank -- Dipl.-Ing. (FH) Frank Enderle anamica UG (haftungsbeschr?nkt) Beinsteinerstr. 6 71334 Waiblingen Telefon: +49 151 14981091 Telefax: +49 7151 1335770 E-Mail: frank.enderle at anamica.de Internet: www.anamica.de Handelsregister: AG Stuttgart HRB 732357 Gesch?ftsf?hrer: Yvonne Holzwarth, Frank Enderle -------------- next part -------------- An embedded and charset-unspecified text was scrubbed... Name: vlc-1.1.0-video-adjust.diff URL: From frank.enderle at anamica.de Thu Jun 24 00:38:45 2010 From: frank.enderle at anamica.de (Frank Enderle) Date: Thu, 24 Jun 2010 00:38:45 +0200 Subject: [vlc-devel] [PATCH] 3-of-3: vlc-1.1.0 decoder buffer state Message-ID: <4C228CF5.1010501@anamica.de> Hi, I'd like to subit the following patch against the VLC-1.1.0 release. ----- Summary Add a new function to query the decoder buffer state through libvlc_media_player Description In my current project I had the need to know how much of a stream is left in the decoder buffers. I added a function which exposes input_DecoderGetFifoState() to the libvlc_media_player interface. I'm not sure if I took care of everything. The patch works for me, but it could be for sure reviewed by someone who has a deeper knowledge of vlc than me (I'm really new to this, started just a few days back). New Function: void libvlc_media_player_get_buffer_state( p_mi, pi_count, pi_size, pi_length ); - p_mi: the Media Player - pi_count: pointer to int to receive count of buffer items or NULL - pi_size: pointer to size_t to receive size of buffer in bytes or NULL - pi_length: pointer to libvlc_time_t to receive bufferlength in ms or NULL ----- Cheers, Frank -- Dipl.-Ing. (FH) Frank Enderle anamica UG (haftungsbeschr?nkt) Beinsteinerstr. 6 71334 Waiblingen Telefon: +49 151 14981091 Telefax: +49 7151 1335770 E-Mail: frank.enderle at anamica.de Internet: www.anamica.de Handelsregister: AG Stuttgart HRB 732357 Gesch?ftsf?hrer: Yvonne Holzwarth, Frank Enderle -------------- next part -------------- An embedded and charset-unspecified text was scrubbed... Name: vlc-1.1.0-fifo-state.diff URL: From jb at videolan.org Thu Jun 24 00:53:18 2010 From: jb at videolan.org (Jean-Baptiste Kempf) Date: Thu, 24 Jun 2010 00:53:18 +0200 Subject: [vlc-devel] [PATCH] 1-of-3: vlc-1.1.0 network poll timeout In-Reply-To: <4C228CEE.3080607@anamica.de> References: <4C228CEE.3080607@anamica.de> Message-ID: <20100623225318.GA17017@videolan.org> Hello Frank, On Thu, Jun 24, 2010 at 12:38:38AM +0200, Frank Enderle wrote : > I'd like to subit the following patch against the VLC-1.1.0 release. Thanks a lot (and a lot more) for your patches. Could you submit the patches against master? Then we can backport. But the other way around is annoying. Best Regards, -- Jean-Baptiste Kempf http://www.jbkempf.com/ From frank.enderle at anamica.de Thu Jun 24 01:35:02 2010 From: frank.enderle at anamica.de (Frank Enderle) Date: Thu, 24 Jun 2010 01:35:02 +0200 Subject: [vlc-devel] [PATCH] 1-of-3: vlc-1.1.0 network poll timeout In-Reply-To: <20100623225318.GA17017@videolan.org> References: <4C228CEE.3080607@anamica.de> <20100623225318.GA17017@videolan.org> Message-ID: <4C229A26.5060804@anamica.de> Hello Jean, I applied the patches against the current git master and did a quick functionality check; seems to work. Find the 'git diff' files attached :) Cheers, Frank Am 24.06.2010 00:53, schrieb Jean-Baptiste Kempf: > Hello Frank, > > > On Thu, Jun 24, 2010 at 12:38:38AM +0200, Frank Enderle wrote : >> I'd like to subit the following patch against the VLC-1.1.0 release. > > Thanks a lot (and a lot more) for your patches. > > Could you submit the patches against master? > > Then we can backport. But the other way around is annoying. > > Best Regards, > -- Dipl.-Ing. (FH) Frank Enderle anamica UG (haftungsbeschr?nkt) Beinsteinerstr. 6 71334 Waiblingen Telefon: +49 151 14981091 Telefax: +49 7151 1335770 E-Mail: frank.enderle at anamica.de Internet: www.anamica.de Handelsregister: AG Stuttgart HRB 732357 Gesch?ftsf?hrer: Yvonne Holzwarth, Frank Enderle -------------- next part -------------- An embedded and charset-unspecified text was scrubbed... Name: vlc-git-fifo-state.diff URL: -------------- next part -------------- An embedded and charset-unspecified text was scrubbed... Name: vlc-git-poll-timeout.diff URL: -------------- next part -------------- An embedded and charset-unspecified text was scrubbed... Name: vlc-git-video-adjust.diff URL: From rem at videolan.org Thu Jun 24 02:07:30 2010 From: rem at videolan.org (=?iso-8859-15?q?R=E9mi?= Denis-Courmont) Date: Thu, 24 Jun 2010 03:07:30 +0300 Subject: [vlc-devel] [PATCH] 1-of-3: vlc-1.1.0 network poll timeout In-Reply-To: <4C228CEE.3080607@anamica.de> References: <4C228CEE.3080607@anamica.de> Message-ID: <201006240307.30514.rem@videolan.org> On Thursday 24 June 2010 01:38:38 Frank Enderle, you wrote: > Hi, > > I'd like to subit the following patch against the VLC-1.1.0 release. This patch is semantically incorrect. We have code paths in VLC that expect net_Read() to take whatever time it takes to get data. With this patch, it will just fail. Nack. -- R?mi Denis-Courmont From frank.enderle at anamica.de Thu Jun 24 02:08:28 2010 From: frank.enderle at anamica.de (Frank Enderle) Date: Thu, 24 Jun 2010 02:08:28 +0200 Subject: [vlc-devel] [PATCH] 1-of-3: vlc-1.1.0 network poll timeout In-Reply-To: <201006240307.30514.rem@videolan.org> References: <4C228CEE.3080607@anamica.de> <201006240307.30514.rem@videolan.org> Message-ID: <4C22A1FC.4090401@anamica.de> Ok - so I guess the correct way would be to put some timeout within the http access module or add a variant of net_Read/Write which supports a timeout parameter on the other hand this sucks. Can you give me a pointer on how to implement the timeout for the http access module in a more compatible manner? Am 24.06.2010 02:07, schrieb R?mi Denis-Courmont: > On Thursday 24 June 2010 01:38:38 Frank Enderle, you wrote: >> Hi, >> >> I'd like to subit the following patch against the VLC-1.1.0 release. > > This patch is semantically incorrect. We have code paths in VLC that expect > net_Read() to take whatever time it takes to get data. With this patch, it > will just fail. > > Nack. > -- Dipl.-Ing. (FH) Frank Enderle anamica UG (haftungsbeschr?nkt) Beinsteinerstr. 6 71334 Waiblingen Telefon: +49 151 14981091 Telefax: +49 7151 1335770 E-Mail: frank.enderle at anamica.de Internet: www.anamica.de Handelsregister: AG Stuttgart HRB 732357 Gesch?ftsf?hrer: Yvonne Holzwarth, Frank Enderle From rem at videolan.org Thu Jun 24 02:19:58 2010 From: rem at videolan.org (=?iso-8859-15?q?R=E9mi?= Denis-Courmont) Date: Thu, 24 Jun 2010 03:19:58 +0300 Subject: [vlc-devel] [PATCH] 2-of-3: vlc-1.1.0 video adjust patch In-Reply-To: <4C228CF2.7020906@anamica.de> References: <4C228CF2.7020906@anamica.de> Message-ID: <201006240319.59293.rem@videolan.org> On Thursday 24 June 2010 01:38:42 Frank Enderle, you wrote: > Hi, > > I'd like to subit the following patch against the VLC-1.1.0 release. Merged, thanks. -- R?mi Denis-Courmont From rem at videolan.org Thu Jun 24 02:27:57 2010 From: rem at videolan.org (=?iso-8859-15?q?R=E9mi?= Denis-Courmont) Date: Thu, 24 Jun 2010 03:27:57 +0300 Subject: [vlc-devel] ffmpeg rtsp access demuxer In-Reply-To: References: Message-ID: <201006240327.57416.rem@videolan.org> On Saturday 12 June 2010 08:53:03 Josh Allmann, you wrote: > Hello, > > Here is a first attempt at integrating the RTSP layer from ffmpeg. It > does so by adding an access demuxer to the VLC scaffolding for > libavformat. > > All the major transports are working (udp, tcp, rtsp-http). I have not > yet looked at features like auth or muxing, but I can do that once I > know this patch is on the right track. @@ -117,10 +119,33 @@ int OpenDemux( vlc_object_t *p_this ) unsigned int i; int64_t i_start_time = -1; bool b_can_seek; + char filename[128] = "", opts[8] = ""; + int filename_len = 0; I'm afraid an RTSP URL could easily exceed 127 characters. Why don't you use asprintf() or similar instead? + if( var_CreateGetBool( p_demux, "rtsp-tcp" ) ) var_InheritBool. + strcpy(opts, "?tcp"); If I'm not mistaken, you could simply assign a const char pointer instead of using strcpy(). + else if( var_CreateGetBool( p_demux, "rtsp-http" ) ) + strcpy(opts, "?http"); + else if( var_CreateGetBool( p_demux, "rtsp-udp" ) ) + strcpy(opts, "?udp"); Same notes as above. + /* build the filename string */ + if( p_demux->psz_access ) + { + filename_len += av_strlcatf( filename + filename_len, + sizeof(filename) - filename_len, + "%s://", p_demux->psz_access); + } + filename_len += av_strlcpy( filename + filename_len, + p_demux->psz_path, + sizeof(filename) - filename_len ); + filename_len += av_strlcpy( filename + filename_len, + opts, + sizeof(filename) - filename_len ); As noted above, this could probably be corrected and simplified to if (psz_access) asprintf(...); else asprintf(...); plus error handling. -- R?mi Denis-Courmont From jb at videolan.org Thu Jun 24 08:08:40 2010 From: jb at videolan.org (Jean-Baptiste Kempf) Date: Thu, 24 Jun 2010 08:08:40 +0200 Subject: [vlc-devel] [PATCH] 3-of-3: vlc-1.1.0 decoder buffer state In-Reply-To: <4C228CF5.1010501@anamica.de> References: <4C228CF5.1010501@anamica.de> Message-ID: <20100624060840.GA861@videolan.org> On Thu, Jun 24, 2010 at 12:38:45AM +0200, Frank Enderle wrote : > +static void EsOutGetDecoderFifoState( es_out_t *out, int *pi_count, size_t *pi_size, mtime_t *pi_length ) > +{ > + int i; > + > + for( i = 0; i < p_sys->i_es; i++ ) You can use for( int i = 0; ... here I believe you have trailing spaces and tabs in your patch, please remove them. Best Regards, -- Jean-Baptiste Kempf http://www.jbkempf.com/ From sebastien-devel at celeos.eu Thu Jun 24 08:34:04 2010 From: sebastien-devel at celeos.eu (=?ISO-8859-1?Q?S=E9bastien?= Escudier) Date: Thu, 24 Jun 2010 08:34:04 +0200 Subject: [vlc-devel] [PATCH] 1-of-3: vlc-1.1.0 network poll timeout In-Reply-To: <4C228CEE.3080607@anamica.de> Message-ID: <1277361244.14132.5.camel@sebastien-desktop> FYI, I had the same issue, so I added SO_KEEPALIVE to the socket of the http access module. You may want to configure your OS to close your sockets after a timeout. For linux see : tcp_keepalive_time, tcp_keepalive_intvl and tcp_keepalive_probes Regards, Seb. From sebastien-devel at celeos.eu Thu Jun 24 08:53:17 2010 From: sebastien-devel at celeos.eu (=?iso-8859-1?b?U+liYXN0aWVu?= Escudier) Date: Thu, 24 Jun 2010 08:53:17 +0200 Subject: [vlc-devel] [PATCH] fix a race condition in rtp stream output Message-ID: <1277362397.4c2300dd8e451@imp.celeos.eu> any comment on this ? Regards, Seb. -------------- next part -------------- A non-text attachment was scrubbed... Name: 0001-rtp-missing-lock.patch Type: text/x-diff Size: 1101 bytes Desc: not available URL: -------------- next part -------------- A non-text attachment was scrubbed... Name: 0002-rtp-safety-check.patch Type: text/x-diff Size: 924 bytes Desc: not available URL: From joshua.allmann at gmail.com Thu Jun 24 10:23:15 2010 From: joshua.allmann at gmail.com (Josh Allmann) Date: Thu, 24 Jun 2010 01:23:15 -0700 Subject: [vlc-devel] ffmpeg rtsp access demuxer In-Reply-To: <201006240327.57416.rem@videolan.org> References: <201006240327.57416.rem@videolan.org> Message-ID: Hi, 2010/6/23 R?mi Denis-Courmont : > On Saturday 12 June 2010 08:53:03 Josh Allmann, you wrote: >> Hello, >> >> Here is a first attempt at integrating the RTSP layer from ffmpeg. It >> does so by adding an access demuxer to the VLC scaffolding for >> libavformat. >> >> All the major transports are working (udp, tcp, rtsp-http). I have not >> yet looked at features like auth or muxing, but I can do that once I >> know this patch is on the right track. > > @@ -117,10 +119,33 @@ int OpenDemux( vlc_object_t *p_this ) > ? ? unsigned int ?i; > ? ? int64_t ? ? ? i_start_time = -1; > ? ? bool ? ? ? ? ?b_can_seek; > + ? ?char ? ? ? ? ?filename[128] = "", opts[8] = ""; > + ? ?int ? ? ? ? ? filename_len = 0; > > I'm afraid an RTSP URL could easily exceed 127 characters. Why don't you use > asprintf() or similar instead? > Well, that's a good function to know. Fixed. > + ? ?if( var_CreateGetBool( p_demux, "rtsp-tcp" ) ) > > var_InheritBool. > Fixed > + ? ? ? ?strcpy(opts, "?tcp"); > > If I'm not mistaken, you could simply assign a const char pointer instead of > using strcpy(). Fixed > > + ? ?else if( var_CreateGetBool( p_demux, "rtsp-http" ) ) > + ? ? ? ?strcpy(opts, "?http"); > + ? ?else if( var_CreateGetBool( p_demux, "rtsp-udp" ) ) > + ? ? ? ?strcpy(opts, "?udp"); > > Same notes as above. > Fixed > + ? ?/* build the filename string */ > + ? ?if( p_demux->psz_access ) > + ? ?{ > + ? ? ? ?filename_len += av_strlcatf( filename + filename_len, > + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? sizeof(filename) - filename_len, > + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? "%s://", p_demux->psz_access); > + ? ?} > + ? ?filename_len += av_strlcpy( filename + filename_len, > + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?p_demux->psz_path, > + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?sizeof(filename) - filename_len ); > + ? ?filename_len += av_strlcpy( filename + filename_len, > + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?opts, > + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?sizeof(filename) - filename_len ); > > As noted above, this could probably be corrected and simplified to > if (psz_access) asprintf(...); else asprintf(...); > plus error handling. > Indeed, simplified considerably. > -- > R?mi Denis-Courmont > -------------- next part -------------- A non-text attachment was scrubbed... Name: 0001-Integrate-FFmpeg-RTSP.patch Type: text/x-patch Size: 5160 bytes Desc: not available URL: From frank.enderle at anamica.de Thu Jun 24 11:25:50 2010 From: frank.enderle at anamica.de (Frank Enderle) Date: Thu, 24 Jun 2010 11:25:50 +0200 Subject: [vlc-devel] [PATCH] 1-of-3: vlc-1.1.0 network poll timeout In-Reply-To: <201006240307.30514.rem@videolan.org> References: <4C228CEE.3080607@anamica.de> <201006240307.30514.rem@videolan.org> Message-ID: <4C23249E.2010608@anamica.de> Hi, I changed the patch to not modify net_Read. Instead I introduced a new function net_Poll which just does the poll. http access calls now this function before each net_Read to see if there's data. net_Read is then only called if net_Poll does not return an error. Is this acceptable? Cheers, Frank Am 24.06.2010 02:07, schrieb R?mi Denis-Courmont: > On Thursday 24 June 2010 01:38:38 Frank Enderle, you wrote: >> Hi, >> >> I'd like to subit the following patch against the VLC-1.1.0 release. > > This patch is semantically incorrect. We have code paths in VLC that expect > net_Read() to take whatever time it takes to get data. With this patch, it > will just fail. > > Nack. > -- Dipl.-Ing. (FH) Frank Enderle anamica UG (haftungsbeschr?nkt) Beinsteinerstr. 6 71334 Waiblingen Telefon: +49 151 14981091 Telefax: +49 7151 1335770 E-Mail: frank.enderle at anamica.de Internet: www.anamica.de Handelsregister: AG Stuttgart HRB 732357 Gesch?ftsf?hrer: Yvonne Holzwarth, Frank Enderle -------------- next part -------------- An embedded and charset-unspecified text was scrubbed... Name: vlc-git-http-timeout.diff URL: From frank.enderle at anamica.de Thu Jun 24 11:32:47 2010 From: frank.enderle at anamica.de (Frank Enderle) Date: Thu, 24 Jun 2010 11:32:47 +0200 Subject: [vlc-devel] [PATCH] 3-of-3: vlc-1.1.0 decoder buffer state In-Reply-To: <20100624060840.GA861@videolan.org> References: <4C228CF5.1010501@anamica.de> <20100624060840.GA861@videolan.org> Message-ID: <4C23263F.2090303@anamica.de> done. Regards, Frank Am 24.06.2010 08:08, schrieb Jean-Baptiste Kempf: > On Thu, Jun 24, 2010 at 12:38:45AM +0200, Frank Enderle wrote : >> +static void EsOutGetDecoderFifoState( es_out_t *out, int *pi_count, size_t *pi_size, mtime_t *pi_length ) >> +{ >> + int i; >> + >> + for( i = 0; i < p_sys->i_es; i++ ) > > You can use for( int i = 0; ... here > > I believe you have trailing spaces and tabs in your patch, please remove > them. > > > Best Regards, > -- Dipl.-Ing. (FH) Frank Enderle anamica UG (haftungsbeschr?nkt) Beinsteinerstr. 6 71334 Waiblingen Telefon: +49 151 14981091 Telefax: +49 7151 1335770 E-Mail: frank.enderle at anamica.de Internet: www.anamica.de Handelsregister: AG Stuttgart HRB 732357 Gesch?ftsf?hrer: Yvonne Holzwarth, Frank Enderle -------------- next part -------------- An embedded and charset-unspecified text was scrubbed... Name: vlc-git-fifo-state.patch URL: From frank.enderle at anamica.de Thu Jun 24 11:49:00 2010 From: frank.enderle at anamica.de (Frank Enderle) Date: Thu, 24 Jun 2010 11:49:00 +0200 Subject: [vlc-devel] [PATCH] 3-of-3: vlc-1.1.0 decoder buffer state In-Reply-To: <4C23263F.2090303@anamica.de> References: <4C228CF5.1010501@anamica.de> <20100624060840.GA861@videolan.org> <4C23263F.2090303@anamica.de> Message-ID: <4C232A0C.4070002@anamica.de> Hi, sorry - I forgot to fix the 'int i' thing. Please ignore my last Mail. Find the corrected patch attached. Cheers, Frank Am 24.06.2010 11:32, schrieb Frank Enderle: > done. > > Regards, > > Frank > > Am 24.06.2010 08:08, schrieb Jean-Baptiste Kempf: >> On Thu, Jun 24, 2010 at 12:38:45AM +0200, Frank Enderle wrote : >>> +static void EsOutGetDecoderFifoState( es_out_t *out, int *pi_count, size_t *pi_size, mtime_t *pi_length ) >>> +{ >>> + int i; >>> + >>> + for( i = 0; i < p_sys->i_es; i++ ) >> >> You can use for( int i = 0; ... here >> >> I believe you have trailing spaces and tabs in your patch, please remove >> them. >> >> >> Best Regards, >> > > > > > _______________________________________________ > vlc-devel mailing list > To unsubscribe or modify your subscription options: > http://mailman.videolan.org/listinfo/vlc-devel -- Dipl.-Ing. (FH) Frank Enderle anamica UG (haftungsbeschr?nkt) Beinsteinerstr. 6 71334 Waiblingen Telefon: +49 151 14981091 Telefax: +49 7151 1335770 E-Mail: frank.enderle at anamica.de Internet: www.anamica.de Handelsregister: AG Stuttgart HRB 732357 Gesch?ftsf?hrer: Yvonne Holzwarth, Frank Enderle -------------- next part -------------- An embedded and charset-unspecified text was scrubbed... Name: vlc-git-fifo-state.patch URL: From jb at videolan.org Thu Jun 24 12:21:22 2010 From: jb at videolan.org (Jean-Baptiste Kempf) Date: Thu, 24 Jun 2010 12:21:22 +0200 Subject: [vlc-devel] [PATCH 1/2] AVFormat Demuxer : Set video ES frame rate. In-Reply-To: <1277051903-8439-1-git-send-email-jmenon86@gmail.com> References: <1277051903-8439-1-git-send-email-jmenon86@gmail.com> Message-ID: <20100624102121.GA16057@videolan.org> On Sun, Jun 20, 2010 at 10:08:22PM +0530, Jai Menon wrote : > + fmt.video.i_frame_rate = cc->time_base.den; > + fmt.video.i_frame_rate_base = cc->time_base.num; Applied Best Regards, -- Jean-Baptiste Kempf http://www.jbkempf.com/ From jmenon86 at gmail.com Thu Jun 24 13:15:07 2010 From: jmenon86 at gmail.com (Jai Menon) Date: Thu, 24 Jun 2010 16:45:07 +0530 Subject: [vlc-devel] [PATCH 1/2] AVCodec Subtitle decoder : Add support for re-assembly of subtitle packets. Message-ID: <1277378108-13123-1-git-send-email-jmenon86@gmail.com> --- modules/codec/avcodec/subtitle.c | 46 +++++++++++++++++++++++++++++++++++++- 1 files changed, 45 insertions(+), 1 deletions(-) diff --git a/modules/codec/avcodec/subtitle.c b/modules/codec/avcodec/subtitle.c index 205e02b..26e521b 100644 --- a/modules/codec/avcodec/subtitle.c +++ b/modules/codec/avcodec/subtitle.c @@ -51,6 +51,9 @@ struct decoder_sys_t { FFMPEG_COMMON_MEMBERS + int sub_packet_size; + int sub_count; + block_t *p_block; }; static subpicture_t *ConvertSubtitle(decoder_t *, AVSubtitle *, mtime_t pts); @@ -86,6 +89,9 @@ int InitSubtitleDec(decoder_t *dec, AVCodecContext *context, sys->i_codec_id = codec_id; sys->psz_namecodec = namecodec; sys->b_delayed_open = false; + sys->sub_packet_size = 0; + sys->sub_count = 0; + sys->p_block = NULL; /* */ context->extradata_size = 0; @@ -109,17 +115,55 @@ int InitSubtitleDec(decoder_t *dec, AVCodecContext *context, return VLC_SUCCESS; } +static block_t *DVDSubPacketize( decoder_t *p_dec, block_t **pp_block ) +{ + decoder_sys_t *sys = p_dec->p_sys; + block_t *p_block; + + p_block = *pp_block; + *pp_block = NULL; + + if( !( sys->sub_packet_size = GetWBE( p_block->p_buffer ) ) ) + { + sys->sub_packet_size = GetDWBE( p_block->p_buffer + 2 ); + } + if( !sys->sub_packet_size ) + { + block_Release( p_block ); + return NULL; + } + + block_ChainAppend( &sys->p_block, p_block ); + sys->sub_count += p_block->i_buffer; + if( sys->sub_count >= sys->sub_packet_size ) + { + sys->sub_packet_size = + sys->sub_count = 0; + p_block = sys->p_block; + sys->p_block = NULL; + return block_ChainGather( p_block ); + } + return NULL; +} + /** * Decode one subtitle */ subpicture_t *DecodeSubtitle(decoder_t *dec, block_t **block_ptr) { decoder_sys_t *sys = dec->p_sys; + block_t *block; if (!block_ptr || !*block_ptr) return NULL; - block_t *block = *block_ptr; + if( sys->i_codec_id == CODEC_ID_DVD_SUBTITLE ) + { + block = DVDSubPacketize(dec, block_ptr); + if (!block) + return NULL; + } + else block = *block_ptr; if (block->i_flags & (BLOCK_FLAG_DISCONTINUITY|BLOCK_FLAG_CORRUPTED)) { block_Release(block); -- 1.7.1 From jmenon86 at gmail.com Thu Jun 24 13:15:08 2010 From: jmenon86 at gmail.com (Jai Menon) Date: Thu, 24 Jun 2010 16:45:08 +0530 Subject: [vlc-devel] [PATCH 2/2] AVCodec Subtitle decoder : Add libavcodec's DVD sub decoder to the list of validated codecs. In-Reply-To: <1277378108-13123-1-git-send-email-jmenon86@gmail.com> References: <1277378108-13123-1-git-send-email-jmenon86@gmail.com> Message-ID: <1277378108-13123-2-git-send-email-jmenon86@gmail.com> This allows for decoding HDDVD subtitles which the native decoder cannot handle. --- modules/codec/avcodec/subtitle.c | 1 + 1 files changed, 1 insertions(+), 0 deletions(-) diff --git a/modules/codec/avcodec/subtitle.c b/modules/codec/avcodec/subtitle.c index 26e521b..1a64e2c 100644 --- a/modules/codec/avcodec/subtitle.c +++ b/modules/codec/avcodec/subtitle.c @@ -70,6 +70,7 @@ int InitSubtitleDec(decoder_t *dec, AVCodecContext *context, switch (codec_id) { case CODEC_ID_HDMV_PGS_SUBTITLE: case CODEC_ID_XSUB: + case CODEC_ID_DVD_SUBTITLE: break; default: msg_Warn(dec, "refusing to decode non validated subtitle codec"); -- 1.7.1 From jb at videolan.org Thu Jun 24 13:56:36 2010 From: jb at videolan.org (Jean-Baptiste Kempf) Date: Thu, 24 Jun 2010 13:56:36 +0200 Subject: [vlc-devel] [PATCH 2/2] AVFormat Demuxer : Set fourcc based on source container. In-Reply-To: <1277051903-8439-2-git-send-email-jmenon86@gmail.com> References: <1277051903-8439-1-git-send-email-jmenon86@gmail.com> <1277051903-8439-2-git-send-email-jmenon86@gmail.com> Message-ID: <20100624115636.GA1759@videolan.org> On Sun, Jun 20, 2010 at 10:08:23PM +0530, Jai Menon wrote : > This is required for those containers which mux the > AVCDecoderConfigurationRecord as private/extra data > so that the AVC packetizer works correctly. Mostly applied. Best Regards, -- Jean-Baptiste Kempf http://www.jbkempf.com/ From ileoo at videolan.org Thu Jun 24 14:45:33 2010 From: ileoo at videolan.org (Ilkka Ollakka) Date: Thu, 24 Jun 2010 15:45:33 +0300 Subject: [vlc-devel] [vlc-commits] commit: Qt4: reset current_index cache sametime as i_cache_id ( Ilkka Ollakka ) In-Reply-To: References: <20100623121009.589B4F91CE@albiero.videolan.org> Message-ID: <20100624124533.GB6356@linux-3azp> On Wed, Jun 23, 2010 at 06:36:21PM +0200, Jakob Leben wrote: > A QModelIndex can become invalid even in case when cached PLItem is still > valid. For example on D&D move. QModelIndex is not permanent, so would be > better to not cache it at all. If anything, input_item_t * should be cached. Yep, youre right. Actually I tried to overcome data( ) const restrain as I couldn't use currentIndex()/findById in there. But seems more and more that this isn't the good way to implement it either. -- Ilkka Ollakka "Nice boy, but about as sharp as a sack of wet mice." -- Foghorn Leghorn -------------- next part -------------- A non-text attachment was scrubbed... Name: not available Type: application/pgp-signature Size: 490 bytes Desc: not available URL: From pankajdnapster at gmail.com Thu Jun 24 14:50:05 2010 From: pankajdnapster at gmail.com (Pankaj yadav) Date: Thu, 24 Jun 2010 05:50:05 -0700 Subject: [vlc-devel] GSoC Message-ID: Hi, This week VLC started running on actual phone.There were some deadlocks which i managed to trap, some bugs in oldrc interface which are now rectified. Current status of VLC on Symbian is : It is able to run Mp3 files on phone.It maintains its playlists and as far as audio playback is considered ,its features are comparable to main vlc..threads stopping and cleanup is achieved perfectly. As it was expected..High Bitrate files produce stuttering sound..I think it is a decoding latency problem so i leave it for the final tweaking. We can say , VLC core is ready for Symbian OS with decent processor. Currently all modules are BUILTIN.In the upcoming weeks I am going to work on Dynamic Plugin Loading.Symbian has got a unique style of DLL loading.Then I will move on to Videoout module. As soon as this is done ......Having complete VLC on phone is just a matter of CONTRIBS and Tweaking. -- Pankaj Yadav Open Source Enthusiast From ileoo at videolan.org Thu Jun 24 16:42:11 2010 From: ileoo at videolan.org (Ilkka Ollakka) Date: Thu, 24 Jun 2010 17:42:11 +0300 Subject: [vlc-devel] [vlc-commits] commit: Qt4: reset current_index cache sametime as i_cache_id ( Ilkka Ollakka ) In-Reply-To: <20100624124533.GB6356@linux-3azp> References: <20100623121009.589B4F91CE@albiero.videolan.org> <20100624124533.GB6356@linux-3azp> Message-ID: <20100624144211.GC6356@linux-3azp> On Thu, Jun 24, 2010 at 03:45:33PM +0300, Ilkka Ollakka wrote: > On Wed, Jun 23, 2010 at 06:36:21PM +0200, Jakob Leben wrote: > > A QModelIndex can become invalid even in case when cached PLItem is still > > valid. For example on D&D move. QModelIndex is not permanent, so would be > > better to not cache it at all. If anything, input_item_t * should be cached. > Yep, youre right. Actually I tried to overcome data( ) const restrain as > I couldn't use currentIndex()/findById in there. But seems more and more > that this isn't the good way to implement it either. Actually one approach would be to remove CACHE-usage from findInner, it would slow it down littlebit but not really sure how big playlist you would need that it would be noticeable delay. -- Ilkka Ollakka When I said "we", officer, I was referring to myself, the four young ladies, and, of course, the goat. -------------- next part -------------- A non-text attachment was scrubbed... Name: not available Type: application/pgp-signature Size: 490 bytes Desc: not available URL: From remi at remlab.net Thu Jun 24 19:00:19 2010 From: remi at remlab.net (=?UTF-8?Q?R=C3=A9mi_Denis-Courmont?=) Date: Thu, 24 Jun 2010 19:00:19 +0200 Subject: [vlc-devel] [PATCH] fix a race condition in rtp stream output In-Reply-To: <1277362397.4c2300dd8e451@imp.celeos.eu> References: <1277362397.4c2300dd8e451@imp.celeos.eu> Message-ID: <6ea54c40ee2f751551fd0f0279882ebb@chewa.net> On Thu, 24 Jun 2010 08:53:17 +0200, S?bastien Escudier wrote: > any comment on this ? I am not very happy with calling RtspAddId under lock_es, and I don't understand why we would need to do that. The other patch seems fine. -- R?mi Denis-Courmont http://www.remlab.net http://fi.linkedin.com/in/remidenis From sebastien-devel at celeos.eu Thu Jun 24 19:14:46 2010 From: sebastien-devel at celeos.eu (=?ISO-8859-1?Q?S=E9bastien?= Escudier) Date: Thu, 24 Jun 2010 19:14:46 +0200 Subject: [vlc-devel] [PATCH] fix a race condition in rtp stream output In-Reply-To: <6ea54c40ee2f751551fd0f0279882ebb@chewa.net> References: <1277362397.4c2300dd8e451@imp.celeos.eu> <6ea54c40ee2f751551fd0f0279882ebb@chewa.net> Message-ID: <1277399686.2924.6.camel@mnmsd-desktop> On Thu, 2010-06-24 at 19:00 +0200, R?mi Denis-Courmont wrote: > > I am not very happy with calling RtspAddId under lock_es, and I don't > understand why we would need to do that. The two patches are related. We can be in SDPGenerate and at the same time in SDPHandleUrl where I added the lock_es, and they both use p_sys->es[0]. Without the lock, in my second patch there would be a race condition when I check (p_sys->es[0]->rtsp_id != NULL). From fenrir at elivagar.org Thu Jun 24 20:25:16 2010 From: fenrir at elivagar.org (Laurent Aimar) Date: Thu, 24 Jun 2010 20:25:16 +0200 Subject: [vlc-devel] [PATCH] 3-of-3: vlc-1.1.0 decoder buffer state In-Reply-To: <4C232A0C.4070002@anamica.de> References: <4C228CF5.1010501@anamica.de> <20100624060840.GA861@videolan.org> <4C23263F.2090303@anamica.de> <4C232A0C.4070002@anamica.de> Message-ID: <1277403916.7580.11.camel@localhost> Hi, On Thu, 2010-06-24 at 11:49 +0200, Frank Enderle wrote: > sorry - I forgot to fix the 'int i' thing. Please ignore my last Mail. > Find the corrected patch attached. void libvlc_media_player_get_buffer_state( libvlc_media_player_t *p_mi, int *pi_count, size_t *pi_size, libvlc_time_t *pi_length ) I am unsure of what information you really need. Because in the current state I don't think it is really usable: - count: it's not really useful as the number of blocks is not related to the number of access unit (it depends on the demuxer). - size: you don't have anything to compare it with (like bitrate) - for all: you don't know on which ES it applies to, and it doesn't take into account how much is already decoded by the decoders (up to 500ms in advanced). So with low input caching, the normal state would be that they all are empty... If you simply want to have an information on the level of 'current buffering' a better way would be to extract the value computed in input_clock_Update used to detect 'late' data. It is the amount of data expressed in time (in microsecond) already acquired and buffered (ie it takes into account the data before and after the decoders not yet rendered). If this information is enough/better for what you need, I could do the input code part. Regards, -- fenrir From frank.enderle at anamica.de Thu Jun 24 20:31:57 2010 From: frank.enderle at anamica.de (Frank Enderle) Date: Thu, 24 Jun 2010 20:31:57 +0200 Subject: [vlc-devel] [PATCH] 3-of-3: vlc-1.1.0 decoder buffer state In-Reply-To: <1277403916.7580.11.camel@localhost> References: <4C228CF5.1010501@anamica.de> <20100624060840.GA861@videolan.org> <4C23263F.2090303@anamica.de> <4C232A0C.4070002@anamica.de> <1277403916.7580.11.camel@localhost> Message-ID: <4C23A49D.3030504@anamica.de> hi, yes - all i'm really interest in is how much data is in the buffer. the background is that i get meta information through the icecast stream tags. the problem is that the information is signaled as soon as it is received, so i need to now how much data is in the buffer at this point of time (i need to now it in time units such as ms). what you write sounds exactly like what i searched for. so i would be really happy if you could implement this and give a short example on how to acquire the data. regards, frank Am 24.06.2010 20:25, schrieb Laurent Aimar: > Hi, > > On Thu, 2010-06-24 at 11:49 +0200, Frank Enderle wrote: >> sorry - I forgot to fix the 'int i' thing. Please ignore my last Mail. >> Find the corrected patch attached. > > void libvlc_media_player_get_buffer_state( libvlc_media_player_t *p_mi, int *pi_count, size_t *pi_size, libvlc_time_t *pi_length ) > > I am unsure of what information you really need. Because in the current > state I don't think it is really usable: > - count: it's not really useful as the number of blocks is not related > to the number of access unit (it depends on the demuxer). > - size: you don't have anything to compare it with (like bitrate) > - for all: you don't know on which ES it applies to, and it doesn't > take into account how much is already decoded by the decoders (up to > 500ms in advanced). > So with low input caching, the normal state would be that they all are > empty... > If you simply want to have an information on the level of 'current > buffering' a better way would be to extract the value computed in > input_clock_Update used to detect 'late' data. It is the amount of data > expressed in time (in microsecond) already acquired and buffered (ie it > takes into account the data before and after the decoders not yet > rendered). > If this information is enough/better for what you need, I could do the > input code part. > > Regards, > -- Dipl.-Ing. (FH) Frank Enderle anamica UG (haftungsbeschr?nkt) Beinsteinerstr. 6 71334 Waiblingen Telefon: +49 151 14981091 Telefax: +49 7151 1335770 E-Mail: frank.enderle at anamica.de Internet: www.anamica.de Handelsregister: AG Stuttgart HRB 732357 Gesch?ftsf?hrer: Yvonne Holzwarth, Frank Enderle From fenrir at elivagar.org Thu Jun 24 21:05:42 2010 From: fenrir at elivagar.org (Laurent Aimar) Date: Thu, 24 Jun 2010 21:05:42 +0200 Subject: [vlc-devel] Dynamic range compressor patch In-Reply-To: References: <201006220353.57723.rem@videolan.org> Message-ID: <20100624190542.GA21497@elivagar.org> On Mon, Jun 21, 2010 at 11:28:55PM -0500, Ron Wright wrote: > +/***************************************************************************** > + * Open: initialize interface > + *****************************************************************************/ > + > +static int Open( vlc_object_t *p_this ) > +{ > + filter_t *p_filter = (filter_t*)p_this; > + vlc_object_t *p_aout = p_filter->p_parent; I see what you need it but I find it really really ugly. Dunno how to avoid that. Anyone with an idea ? > + struct filter_sys_t *p_sys; > + float amp; > + float *as = NULL; Useless init. > + unsigned int count; > + float env; > + float env_peak; > + float env_rms; > + float gain; > + float gain_t; > + rms_env *rms = NULL; Useless init. > + float sum; > + > + sample_rate = (float)p_filter->fmt_in.audio.i_rate; Useless cast. > + rms = rms_env_new(); > + if ( !rms ) > + { > + free( p_sys ); > + return VLC_ENOMEM; > + } > + > + sum = 0.0f; > + amp = 0.0f; > + gain = 0.0f; > + gain_t = 0.0f; > + env = 0.0f; > + env_rms = 0.0f; > + env_peak = 0.0f; > + count = 0; > + > + as = malloc( A_TBL * sizeof(float) ); calloc( A_TBL, sizeof(*as) ) > + if ( !as ) > + { > + rms_env_free( rms ); > + free( p_sys ); > + return VLC_ENOMEM; > + } But moving as and rms into the context (instead of allocating them independantly) would avoid thoses 2 mallocs and so simplify the code (only one error path). > + as[0] = 1.0f; > + for ( i = 1; i < A_TBL; i++ ) { > + as[i] = expf( -1.0f / ( sample_rate * (float)i / (float)A_TBL ) ); Useless float casts. > + p_sys->amp = amp; > + p_sys->as = as; > + p_sys->count = count; > + p_sys->env = env; > + p_sys->env_peak = env_peak; > + p_sys->env_rms = env_rms; > + p_sys->gain = gain; > + p_sys->gain_t = gain_t; > + p_sys->rms = rms; > + p_sys->sum = sum; I think you call remove most of the local variables and directly init p_sys. > + vlc_mutex_init( &p_sys->lock ); > + > + p_sys->rms_peak = var_CreateGetFloat( p_aout, "compressor-rms-peak" ); > + p_sys->attack = var_CreateGetFloat( p_aout, "compressor-attack" ); > + p_sys->release = var_CreateGetFloat( p_aout, "compressor-release" ); > + p_sys->threshold = var_CreateGetFloat( p_aout, "compressor-threshold" ); > + p_sys->ratio = var_CreateGetFloat( p_aout, "compressor-ratio" ); > + p_sys->knee = var_CreateGetFloat( p_aout, "compressor-knee" ); > + p_sys->makeup_gain = var_CreateGetFloat( p_aout, "compressor-makeup-gain" ); > + p_sys->amplitude = 0; > + p_sys->gain_red = 0; > + > + /* Add our own callbacks */ > + var_AddCallback( p_aout, "compressor-rms-peak", RMSPeakCallback, p_sys ); > + var_AddCallback( p_aout, "compressor-attack", AttackCallback, p_sys ); > + var_AddCallback( p_aout, "compressor-release", ReleaseCallback, p_sys ); > + var_AddCallback( p_aout, "compressor-threshold", ThresholdCallback, p_sys ); > + var_AddCallback( p_aout, "compressor-ratio", RatioCallback, p_sys ); > + var_AddCallback( p_aout, "compressor-knee", KneeCallback, p_sys ); > + var_AddCallback( p_aout, "compressor-makeup-gain", MakeupGainCallback, > + p_sys ); > + > + msg_Dbg( p_filter, "compressor successfully initialized" ); > + return VLC_SUCCESS; > +} > + > +static float f_db2lin_cube( float db, filter_sys_t * p_sys ) > +{ > + float scale = ( db - DB_MIN ) * (float)LIN_TABLE_SIZE / ( DB_MAX - DB_MIN ); > + int base = f_round( scale - 0.5f ); > + float ofs = scale - base; > + float *lin_data = p_sys->lin_data; > + > + if ( base < 1 ) > + { > + return 0.0f; > + } > + else if ( base > LIN_TABLE_SIZE - 3 ) > + { > + return lin_data[LIN_TABLE_SIZE - 2]; > + } > + > + return cube_interp( ofs, lin_data[base - 1], > + lin_data[base], > + lin_data[base + 1], > + lin_data[base + 2] ); > +} > + > +static float f_db2lin_lerp( float db, filter_sys_t * p_sys ) > +{ > + float scale = ( db - DB_MIN ) * (float)LIN_TABLE_SIZE / ( DB_MAX - DB_MIN ); > + int base = f_round( scale - 0.5f ); > + float ofs = scale - base; > + float *lin_data = p_sys->lin_data; > + > + if ( base < 1 ) > + { > + return 0.0f; > + } > + else if ( base > LIN_TABLE_SIZE - 3 ) > + { > + return lin_data[LIN_TABLE_SIZE - 2]; > + } > + > + return ( 1.0f - ofs ) * lin_data[base] + ofs * lin_data[base + 1]; > +} f_db2lin_cube and f_db2lin_lerp could be merged and simply use the define for the only specific line. > +static float f_lin2db_cube( float lin, filter_sys_t * p_sys ) > +{ > + float scale = ( lin - LIN_MIN ) * (float)DB_TABLE_SIZE / > + ( LIN_MAX - LIN_MIN ); > + int base = f_round( scale - 0.5f ); > + float ofs = scale - base; > + float *db_data = p_sys->db_data; > + > + if ( base < 2 ) > + { > + return db_data[2] * scale * 0.5f - 23.0f * ( 2.0f - scale ); > + } > + else if ( base > DB_TABLE_SIZE - 3 ) > + { > + return db_data[DB_TABLE_SIZE - 2]; > + } > + > + return cube_interp( ofs, db_data[base - 1], > + db_data[base], > + db_data[base + 1], > + db_data[base + 2] ); > +} > + > +static float f_lin2db_lerp( float lin, filter_sys_t * p_sys ) > +{ > + float scale = ( lin - LIN_MIN ) * (float)DB_TABLE_SIZE / > + ( LIN_MAX - LIN_MIN ); > + int base = f_round( scale - 0.5f ); > + float ofs = scale - base; > + float *db_data = p_sys->db_data; > + > + if ( base < 2 ) > + { > + return db_data[2] * scale * 0.5f - 23.0f * ( 2.0f - scale ); > + } > + else if ( base > DB_TABLE_SIZE - 2 ) > + { > + return db_data[DB_TABLE_SIZE - 1]; > + } > + > + return ( 1.0f - ofs ) * db_data[base] + ofs * db_data[base + 1]; > +} Same here (dunno if the -2 vs -3 is a bug or not, it doesn't match f_db2lin_cube vs f_db2lin_lerp). > +static void round_to_zero( volatile float *f ) > +{ > + *f += 1e-18; > + *f -= 1e-18; > +} I don't think volatile is needed here. Btw, what do you want to do with it ? Is it to remove not normalized number ? > +static float f_max( float x, float a ) > +{ > + x -= a; > + x += fabs( x ); > + x *= 0.5; > + x += a; > + > + return x; > +} Is it really a max like function ? > +static block_t * DoWork( filter_t * p_filter, block_t * p_in_buf ) > +{ > + int i_samples = p_in_buf->i_nb_samples; > + int i_channels = aout_FormatNbChannels( &p_filter->fmt_in.audio ); > + float *p_out = (float*)p_in_buf->p_buffer; > + float *p_in = (float*)p_in_buf->p_buffer; > + > + float rms_peak, attack, release, threshold, ratio, knee, makeup_gain; > + float amp, *as, env, env_peak, env_rms, gain, gain_t, sum; > + unsigned int count; > + rms_env *rms; > + > + float ga, gr, rs, mug, knee_min, knee_max, ef_a, ef_ai; > + > + int pos, pos_chan; > + > + /* Current configuration */ > + struct filter_sys_t *p_sys = p_filter->p_sys; > + > + vlc_mutex_lock( &p_sys->lock ); > + > + /* RMS/peak (float value) */ > + rms_peak = p_sys->rms_peak; > + > + /* Attack time (ms) (float value) */ > + attack = p_sys->attack; > + > + /* Release time (ms) (float value) */ > + release = p_sys->release; > + > + /* Threshold level (dB) (float value) */ > + threshold = p_sys->threshold; > + > + /* Ratio (n:1) (float value) */ > + ratio = p_sys->ratio; > + > + /* Knee radius (dB) (float value) */ > + knee = p_sys->knee; > + > + /* Makeup gain (dB) (float value) */ > + makeup_gain = p_sys->makeup_gain; As you made a copy of all the variable protected by the lock, you could release it here (instead of later). It is always good to minimized the time you hold a lock when possible. > + > + amp = p_sys->amp; > + as = p_sys->as; > + count = p_sys->count; > + env = p_sys->env; > + env_peak = p_sys->env_peak; > + env_rms = p_sys->env_rms; > + gain = p_sys->gain; > + gain_t = p_sys->gain_t; I would prefer if you don't use _t for a variable. > + rms = p_sys->rms; > + sum = p_sys->sum; > + > + ga = attack < 2.0f ? 0.0f > + : as[f_round( attack * 0.001f * (float)( A_TBL - 1 ) )]; > + gr = as[f_round( release * 0.001f * (float)( A_TBL - 1 ) )]; Are thoses as[] accesses guaranted to be insided bound ? (besides, with float I am a bit paranoiac). > + rs = ( ratio - 1.0f ) / ratio; > + mug = db2lin( makeup_gain, p_sys ); > + knee_min = db2lin( threshold - knee, p_sys ); > + knee_max = db2lin( threshold + knee, p_sys ); > + ef_a = ga * 0.25f; > + ef_ai = 1.0f - ef_a; > + > + for ( pos = 0; pos < i_samples; pos++ ) > + { > + float lev_in = fabs( p_in[0] ); > + for( pos_chan = 1; pos_chan < i_channels; pos_chan++ ) > + { > + lev_in = f_max( lev_in, fabs( p_in[pos_chan] ) ); > + } > + sum += lev_in * lev_in; > + > + if ( amp > env_rms ) > + { > + env_rms = env_rms * ga + amp * ( 1.0f - ga ); > + } > + else > + { > + env_rms = env_rms * gr + amp * ( 1.0f - gr ); > + } > + round_to_zero( &env_rms ); > + if ( lev_in > env_peak ) > + { > + env_peak = env_peak * ga + lev_in * ( 1.0f - ga ); > + } > + else > + { > + env_peak = env_peak * gr + lev_in * ( 1.0f - gr ); > + } > + round_to_zero( &env_peak ); > + if ( ( count++ & 3 ) == 3 ) > + { > + amp = rms_env_process( rms, sum * 0.25f ); > + sum = 0.0f; > + if ( isnan( env_rms ) ) > + { > + /* This can happen sometimes, but I don't know why */ > + env_rms = 0.0f; Maybe because your env_rms equation diverges (easy with float) or one of the other numbers used is a NaN. > + } > + > + env = LIN_INTERP( rms_peak, env_rms, env_peak ); > + > + if ( env <= knee_min ) > + { > + gain_t = 1.0f; > + } > + else if ( env < knee_max ) > + { > + const float x = -( threshold - knee > + - lin2db( env, p_sys ) ) / knee; > + gain_t = db2lin( -knee * rs * x * x * 0.25f, p_sys ); > + } > + else > + { > + gain_t = db2lin( ( threshold - lin2db( env, p_sys ) ) * rs, > + p_sys ); > + } > + } > + > + gain = gain * ef_a + gain_t * ef_ai; > + > + for ( pos_chan = 0; pos_chan < i_channels; pos_chan++ ) > + { > + p_out[pos_chan] = p_in[pos_chan] * gain * mug; > + } > + > + p_in += i_channels; > + p_out += i_channels; You may also one only one pointer (but not needed). > + } > + > + p_sys->sum = sum; > + p_sys->amp = amp; > + p_sys->gain = gain; > + p_sys->gain_t = gain_t; > + p_sys->env = env; > + p_sys->env_rms = env_rms; > + p_sys->env_peak = env_peak; > + p_sys->count = count; > + > + p_sys->amplitude = lin2db( env, p_sys ); > + p_sys->gain_red = lin2db( gain, p_sys ); > + > + vlc_mutex_unlock( &p_sys->lock ); > + > + return p_in_buf; > +} > + > +/***************************************************************************** > + * Callback functions > + *****************************************************************************/ > + > +static int RMSPeakCallback( vlc_object_t *p_this, char const *psz_cmd, > + vlc_value_t oldval, vlc_value_t newval, > + void * p_data ) > +{ > + VLC_UNUSED(p_this); VLC_UNUSED(psz_cmd); VLC_UNUSED(oldval); > + filter_sys_t *p_sys = p_data; > + > + if ( newval.f_float < 0.0 ) > + { > + newval.f_float = 0.0; > + } > + else if ( newval.f_float > 1.0 ) > + { > + newval.f_float = 1.0; > + } > + > + vlc_mutex_lock( &p_sys->lock ); > + p_sys->rms_peak = newval.f_float; > + vlc_mutex_unlock( &p_sys->lock ); > + > + return VLC_SUCCESS; > +} > + > +static int AttackCallback( vlc_object_t *p_this, char const *psz_cmd, > + vlc_value_t oldval, vlc_value_t newval, > + void * p_data ) > +{ > + VLC_UNUSED(p_this); VLC_UNUSED(psz_cmd); VLC_UNUSED(oldval); > + filter_sys_t *p_sys = p_data; > + > + if ( newval.f_float < 1.5 ) > + { > + newval.f_float = 1.5; > + } > + else if ( newval.f_float > 400.0 ) > + { > + newval.f_float = 400.0; > + } > + > + vlc_mutex_lock( &p_sys->lock ); > + p_sys->attack = newval.f_float; > + vlc_mutex_unlock( &p_sys->lock ); > + > + return VLC_SUCCESS; > +} > + > +static int ReleaseCallback( vlc_object_t *p_this, char const *psz_cmd, > + vlc_value_t oldval, vlc_value_t newval, > + void * p_data ) > +{ > + VLC_UNUSED(p_this); VLC_UNUSED(psz_cmd); VLC_UNUSED(oldval); > + filter_sys_t *p_sys = p_data; > + > + if ( newval.f_float < 2.0 ) > + { > + newval.f_float = 2.0; > + } > + else if ( newval.f_float > 800.0 ) > + { > + newval.f_float = 800.0; > + } > + > + vlc_mutex_lock( &p_sys->lock ); > + p_sys->release = newval.f_float; > + vlc_mutex_unlock( &p_sys->lock ); > + > + return VLC_SUCCESS; > +} > + > +static int ThresholdCallback( vlc_object_t *p_this, char const *psz_cmd, > + vlc_value_t oldval, vlc_value_t newval, > + void * p_data ) > +{ > + VLC_UNUSED(p_this); VLC_UNUSED(psz_cmd); VLC_UNUSED(oldval); > + filter_sys_t *p_sys = p_data; > + > + if ( newval.f_float < -30.0 ) > + { > + newval.f_float = -30.0; > + } > + else if ( newval.f_float > 0.0 ) > + { > + newval.f_float = 0.0; > + } > + > + vlc_mutex_lock( &p_sys->lock ); > + p_sys->threshold = newval.f_float; > + vlc_mutex_unlock( &p_sys->lock ); > + > + return VLC_SUCCESS; > +} > + > +static int RatioCallback( vlc_object_t *p_this, char const *psz_cmd, > + vlc_value_t oldval, vlc_value_t newval, > + void * p_data ) > +{ > + VLC_UNUSED(p_this); VLC_UNUSED(psz_cmd); VLC_UNUSED(oldval); > + filter_sys_t *p_sys = p_data; > + > + if ( newval.f_float < 1.0 ) > + { > + newval.f_float = 1.0; > + } > + else if ( newval.f_float > 20.0 ) > + { > + newval.f_float = 20.0; > + } > + > + vlc_mutex_lock( &p_sys->lock ); > + p_sys->ratio = newval.f_float; > + vlc_mutex_unlock( &p_sys->lock ); > + > + return VLC_SUCCESS; > +} > + > +static int KneeCallback( vlc_object_t *p_this, char const *psz_cmd, > + vlc_value_t oldval, vlc_value_t newval, > + void * p_data ) > +{ > + VLC_UNUSED(p_this); VLC_UNUSED(psz_cmd); VLC_UNUSED(oldval); > + filter_sys_t *p_sys = p_data; > + > + if ( newval.f_float < 1.0 ) > + { > + newval.f_float = 1.0; > + } > + else if ( newval.f_float > 10.0 ) > + { > + newval.f_float = 10.0; > + } > + > + vlc_mutex_lock( &p_sys->lock ); > + p_sys->knee = newval.f_float; > + vlc_mutex_unlock( &p_sys->lock ); > + > + return VLC_SUCCESS; > +} > + > +static int MakeupGainCallback( vlc_object_t *p_this, char const *psz_cmd, > + vlc_value_t oldval, vlc_value_t newval, > + void * p_data ) > +{ > + VLC_UNUSED(p_this); VLC_UNUSED(psz_cmd); VLC_UNUSED(oldval); > + filter_sys_t *p_sys = p_data; > + > + if ( newval.f_float < 0.0 ) > + { > + newval.f_float = 0.0; > + } > + else if ( newval.f_float > 24.0 ) > + { > + newval.f_float = 24.0; > + } > + > + vlc_mutex_lock( &p_sys->lock ); > + p_sys->makeup_gain = newval.f_float; > + vlc_mutex_unlock( &p_sys->lock ); > + > + return VLC_SUCCESS; > +} Doing a small float cliping function would reduce the code (and so improve readability) IMHO. You may also create only one callback and check the value of psz_cmd inside but that depends on one preferences. Regards, -- fenrir From michi_1111 at yahoo.de Thu Jun 24 21:55:32 2010 From: michi_1111 at yahoo.de (Michael Grafl) Date: Thu, 24 Jun 2010 21:55:32 +0200 Subject: [vlc-devel] MPEG-21 File Format support for VLC: Please assist Message-ID: <4C23B834.5070809@yahoo.de> Hello all, I have implemented a prototype of a VLC demux module for the MPEG-21 File Format (*.m21, *.mp21). I would like to contribute my work to VLC, but it still needs a lot of refactoring and coding. FYI: With the MPEG-21 File Format, (among other things) an entire music album can be stored in a single file, similar to iTunes LP. More information on the format and a discussion with j-b can be found in the forum: http://forum.videolan.org/viewtopic.php?f=18&t=77530 I have attached the zipped version of the patch (unfortunately still for VLC 1.0.0). Who is willing to help me refactor the module? Three important aspects for refactoring (from my point of view) are: - General cleanup: I have based my implementation on the MP4 demux module and many things are not important to the MP21 module (e.g., the drms files seem useless) - Splitting the module into an access module and a demux module, thus avoiding some cruel hacks - More general support of the MP21 File Format: My current implementation only works with MP21 files from my own authoring tool. j-b suggested that I should cry for help, so pleeease help. Thanks and best regards, MyKey_ -------------- next part -------------- A non-text attachment was scrubbed... Name: mp21-module-patch.zip Type: application/zip Size: 71461 bytes Desc: not available URL: From remi at remlab.net Thu Jun 24 22:46:33 2010 From: remi at remlab.net (=?UTF-8?Q?R=C3=A9mi_Denis-Courmont?=) Date: Thu, 24 Jun 2010 22:46:33 +0200 Subject: [vlc-devel] Dynamic range compressor patch In-Reply-To: <20100624190542.GA21497@elivagar.org> References: <201006220353.57723.rem@videolan.org> <20100624190542.GA21497@elivagar.org> Message-ID: On Thu, 24 Jun 2010 21:05:42 +0200, Laurent Aimar wrote: > Doing a small float cliping function would reduce the code (and so > improve readability) IMHO. Yes. > You may also create only one callback and check the value of psz_cmd > inside but that depends on one preferences. I really don't like that pattern. The code would not really be any simpler, with all those strcmp() around. If the clipping values were identical, we could have passed a float pointer as p_data (p_sys can be retrieved from p_this), and then: *(float *)p_data = newval.f_float; But the clipping values are different, so it won't work. Then I strongly prefer one callback per variable. But the worse part is, this (anti-)pattern tends to get overused and you get multiplexed callbacks that do almost completely unrelated things depending on psz_cmd. This is confusing, and sometimes makes locking more difficult rather than easier. -- R?mi Denis-Courmont http://www.remlab.net http://fi.linkedin.com/in/remidenis From remi at remlab.net Thu Jun 24 22:49:42 2010 From: remi at remlab.net (=?UTF-8?Q?R=C3=A9mi_Denis-Courmont?=) Date: Thu, 24 Jun 2010 22:49:42 +0200 Subject: [vlc-devel] MPEG-21 File Format support for VLC: Please assist In-Reply-To: <4C23B834.5070809@yahoo.de> References: <4C23B834.5070809@yahoo.de> Message-ID: <6be04070190606c13087a178927c122b@chewa.net> On Thu, 24 Jun 2010 21:55:32 +0200, Michael Grafl wrote: > I have implemented a prototype of a VLC demux module for the MPEG-21 > File Format (*.m21, *.mp21). I would like to contribute my work to VLC, > but it still needs a lot of refactoring and coding. If it's a concatenation of files in another format, you may be better off writing an access plugin similar to the current ZIP file handler. Then you don't need to reinvent the MP4 demux or whatever else. -- R?mi Denis-Courmont http://www.remlab.net http://fi.linkedin.com/in/remidenis From ileoo at videolan.org Thu Jun 24 22:51:23 2010 From: ileoo at videolan.org (Ilkka Ollakka) Date: Thu, 24 Jun 2010 23:51:23 +0300 Subject: [vlc-devel] MPEG-21 File Format support for VLC: Please assist In-Reply-To: <4C23B834.5070809@yahoo.de> References: <4C23B834.5070809@yahoo.de> Message-ID: <20100624205123.GD6356@linux-3azp> On Thu, Jun 24, 2010 at 09:55:32PM +0200, Michael Grafl wrote: > Hello all, Hi, > I have attached the zipped version of the patch (unfortunately still > for VLC 1.0.0). Who is willing to help me refactor the module? Would be better to move developing against 1.1 or 1.2 asap. > Three important aspects for refactoring (from my point of view) are: > - General cleanup: I have based my implementation on the MP4 demux > module and many things are not important to the MP21 module (e.g., > the drms files seem useless) How does the mpeg-21 format differs from mp4-format? Why not just extend mp4-demuxer as you seem to have really much in common code there. -- Ilkka Ollakka It's the thought, if any, that counts! -------------- next part -------------- A non-text attachment was scrubbed... Name: not available Type: application/pgp-signature Size: 490 bytes Desc: not available URL: From rafael.carre at gmail.com Fri Jun 25 00:12:14 2010 From: rafael.carre at gmail.com (=?UTF-8?B?UmFmYcOrbCBDYXJyw6k=?=) Date: Fri, 25 Jun 2010 00:12:14 +0200 Subject: [vlc-devel] [PATCH] 1-of-3: vlc-1.1.0 network poll timeout In-Reply-To: <4C228CEE.3080607@anamica.de> References: <4C228CEE.3080607@anamica.de> Message-ID: <20100625001214.7e97fd7d@kru> On Thu, 24 Jun 2010 00:38:38 +0200 Frank Enderle wrote: > - if (errno != EINTR) > + case -1: /* error */ > + if (errno != EINTR) > + goto error; > + msg_Err (p_this, "Polling error: %m"); > + continue; no need to log EINTR as an error -- ? Rafa?l Carr? ? -------------- next part -------------- A non-text attachment was scrubbed... Name: signature.asc Type: application/pgp-signature Size: 198 bytes Desc: not available URL: From jakob.leben at gmail.com Fri Jun 25 01:01:30 2010 From: jakob.leben at gmail.com (Jakob Leben) Date: Fri, 25 Jun 2010 01:01:30 +0200 Subject: [vlc-devel] [vlc-commits] commit: Qt4: check that index.isValid too (Ilkka Ollakka ) In-Reply-To: <20100624211828.221EFFA1F5@albiero.videolan.org> References: <20100624211828.221EFFA1F5@albiero.videolan.org> Message-ID: On Thu, Jun 24, 2010 at 11:18 PM, wrote: > vlc | branch: master | Ilkka Ollakka | Thu Jun 24 > 18:06:25 2010 +0300| [f9fe9f294474e6c286ff458522e5dd373f92564d] | committer: > Ilkka Ollakka > > diff --git a/modules/gui/qt4/components/playlist/playlist_model.cpp > b/modules/gui/qt4/components/playlist/playlist_model.cpp > index 75d885b..a1f1412 100644 > --- a/modules/gui/qt4/components/playlist/playlist_model.cpp > +++ b/modules/gui/qt4/components/playlist/playlist_model.cpp > @@ -388,6 +388,9 @@ QVariant PLModel::data( const QModelIndex &index, int > role ) const > /* Seek from current index toward the top and see if index is one of > parent nodes */ > bool PLModel::isParent( const QModelIndex &index, const QModelIndex > ¤t ) const > { > + if( !index.isValid() ) > + return false; > + > if( index == current ) > return true; > I don't see a reason for this. Invalid QModelIndex does not mean an error or something like that, but means the top item. It is invalid simply because it has no parent, therefore can not have a column and row position within any parent. And, again, since it is the one and only top item, it is a parent of any other item. -------------- next part -------------- An HTML attachment was scrubbed... URL: From frank.enderle at anamica.de Fri Jun 25 01:36:19 2010 From: frank.enderle at anamica.de (Frank Enderle) Date: Fri, 25 Jun 2010 01:36:19 +0200 Subject: [vlc-devel] [PATCH] 3-of-3: vlc-1.1.0 decoder buffer state In-Reply-To: <1277403916.7580.11.camel@localhost> References: <4C228CF5.1010501@anamica.de> <20100624060840.GA861@videolan.org> <4C23263F.2090303@anamica.de> <4C232A0C.4070002@anamica.de> <1277403916.7580.11.camel@localhost> Message-ID: <4C23EBF3.4060000@anamica.de> Hi, I wrote a new version of the patch, taking in account what you said. Can you please check if this is the way you meant or if I'm completely of track? The patch is against 1.1.0 - if it's ok and should be merged I'll supply a patch against master - I'm just out of time at the moment.. Thanks, Frank Am 24.06.2010 20:25, schrieb Laurent Aimar: > Hi, > > On Thu, 2010-06-24 at 11:49 +0200, Frank Enderle wrote: >> sorry - I forgot to fix the 'int i' thing. Please ignore my last Mail. >> Find the corrected patch attached. > > void libvlc_media_player_get_buffer_state( libvlc_media_player_t *p_mi, int *pi_count, size_t *pi_size, libvlc_time_t *pi_length ) > > I am unsure of what information you really need. Because in the current > state I don't think it is really usable: > - count: it's not really useful as the number of blocks is not related > to the number of access unit (it depends on the demuxer). > - size: you don't have anything to compare it with (like bitrate) > - for all: you don't know on which ES it applies to, and it doesn't > take into account how much is already decoded by the decoders (up to > 500ms in advanced). > So with low input caching, the normal state would be that they all are > empty... > If you simply want to have an information on the level of 'current > buffering' a better way would be to extract the value computed in > input_clock_Update used to detect 'late' data. It is the amount of data > expressed in time (in microsecond) already acquired and buffered (ie it > takes into account the data before and after the decoders not yet > rendered). > If this information is enough/better for what you need, I could do the > input code part. > > Regards, > -- Dipl.-Ing. (FH) Frank Enderle anamica UG (haftungsbeschr?nkt) Beinsteinerstr. 6 71334 Waiblingen Telefon: +49 151 14981091 Telefax: +49 7151 1335770 E-Mail: frank.enderle at anamica.de Internet: www.anamica.de Handelsregister: AG Stuttgart HRB 732357 Gesch?ftsf?hrer: Yvonne Holzwarth, Frank Enderle -------------- next part -------------- An embedded and charset-unspecified text was scrubbed... Name: vlc-1.1.0-buffer-time.patch URL: From remi at remlab.net Fri Jun 25 06:07:53 2010 From: remi at remlab.net (=?iso-8859-1?q?R=E9mi?= Denis-Courmont) Date: Fri, 25 Jun 2010 07:07:53 +0300 Subject: [vlc-devel] xcb/window.c fullscreen in mozilla plugin In-Reply-To: References: Message-ID: <201006250707.54124.remi@remlab.net> On Friday 25 June 2010 03:04:22 David Menestrina, you wrote: > I found your email info in the git logs, and I figured you might be the > best person to help me out. > > I am trying to fix VLC bug 3777: > https://trac.videolan.org/vlc/ticket/3777 > > Everything I know about XCB and fullscreen I learned in the past two days, > but the problem seems to be that setting _NET_WM_STATE_FULLSCREEN has no > effect on an embedded window. Window managers do not track non-top windows. Adjusting an embedded window to screen size would not make much sense anyway; it would be cropped to its parent window borders in any case. > Therefore, I have written some code to set > the window's parent to the root window before setting the window to > fullscreen. > My first question is if you think this is a good approach, or if it would > be better to create a new window for fullscreen mode. Unfortunately not. That's why I did not implement it in the first place. Reparenting someone else's window seems like a terrible concept. I have not tried and it might just work with Intrinsics as used in the Mozilla plugin. But I expect some ugly side effects in general, depending on which UI toolkit the application is using and how so. > My second question is about some problems I'm having with the current > approach. In order to do the reparenting correctly, I must put the window > back where it was when exiting fullscreen mode. That's precisely why the idea is bad. There is no way to do this correctly in all cases. The UI toolkit might change the layout of the embedding window's parent window. Or it might simply reparent the embedding window, thus defeating the fullscreen mode. > Putting the window back > involves saving the location and parent of the embedded window, which > require calls to xcb_get_geometry and xcb_query_tree, respectively. > > What I'm seeing is that about 30% of the time, my code works fine. About > 70% of the time, my code hangs waiting for the reply to xcb_get_geometry. > As I said, I have no real experience with XCB, so if you have any ideas as > to why xcb_get_geometry_reply would hang forever, that would be helpful. Most probably the XCB events thread dequeued the reply from within Thread() before you called xcb_get_geometry_reply(). Then you get stuck forever waiting for a message that is already gone. Note that none of the current Control() code paths ever wait for a reply. I like to think that if an application told LibVLC to embed the video, then that application should be responsible for fullscreen handling. That's how the VLC Qt4 and Skins2 user interfaces work. Alternatively, we could change the XCB drawable plugin to create an intermediary window as a parent to video and child to the embedding window. Then reparenting becomes a non-issue. But this would require some amount of event handling to keep the layout in sync. Also, the application would loose input events in fullscreen mode - which is precisely why fullscreen mode handling was changed in the first place. -- R?mi Denis-Courmont From michi_1111 at yahoo.de Fri Jun 25 07:40:21 2010 From: michi_1111 at yahoo.de (Michael Grafl) Date: Fri, 25 Jun 2010 07:40:21 +0200 Subject: [vlc-devel] MPEG-21 File Format support for VLC: Please assist In-Reply-To: <20100624205123.GD6356@linux-3azp> References: <4C23B834.5070809@yahoo.de> <20100624205123.GD6356@linux-3azp> Message-ID: <4C244145.70707@yahoo.de> Hi, On 24/06/2010 22:51, Ilkka Ollakka wrote: > On Thu, Jun 24, 2010 at 09:55:32PM +0200, Michael Grafl wrote: >> Hello all, > > Hi, > >> I have attached the zipped version of the patch (unfortunately still >> for VLC 1.0.0). Who is willing to help me refactor the module? > > Would be better to move developing against 1.1 or 1.2 asap. Yes, I will move to 1.2. > >> Three important aspects for refactoring (from my point of view) are: >> - General cleanup: I have based my implementation on the MP4 demux >> module and many things are not important to the MP21 module (e.g., >> the drms files seem useless) > > How does the mpeg-21 format differs from mp4-format? Why not just extend > mp4-demuxer as you seem to have really much in common code there. > The main difference is that the mp21 file format is not another video and audio file format, i.e., it does not specify any codecs. It is a wrapper format that structures arbitrary files and respective metadata. One use case is packing mp4 files of a music album together with cover art etc. into a single mp21 file. The mp21 file format and the mp4 file format have a common base, the ISO Base Media File Format that defines the inner architecture and structure. Actually, my authoring tool (http://music-mp21.sf.net) creates files that are valid mp21 and mp4 files. However, I think that having mp21 and mp4 in a single demuxer would make the code rather convoluted because we'd have to distinguish between mp4 and mp21 compatible files nontheless. The main problem would be that mp4 files could use mp21 features without beeing valid mp21 files. Thus, from my point of view, they should get different demuxers. @R?mi: Yes, it is a good idea to base the mp12 access module on the zip module and it will be adopted. Best regards, MyKey_ From jmenon86 at gmail.com Fri Jun 25 10:29:19 2010 From: jmenon86 at gmail.com (Jai Menon) Date: Fri, 25 Jun 2010 13:59:19 +0530 Subject: [vlc-devel] [PATCH] JPEG 2000 decoding support. Message-ID: <1277454559-12576-1-git-send-email-jmenon86@gmail.com> Adds a JPEG 2000 fourcc and hooks it up to the libavcodec decoder. Also add an alias to 'mjp2' which is used to pack JPEG 2000 in MOV by Final Cut Pro etc. --- include/vlc_fourcc.h | 1 + modules/codec/avcodec/fourcc.c | 1 + src/misc/fourcc.c | 3 +++ 3 files changed, 5 insertions(+), 0 deletions(-) diff --git a/include/vlc_fourcc.h b/include/vlc_fourcc.h index e28c42b..b1f349e 100644 --- a/include/vlc_fourcc.h +++ b/include/vlc_fourcc.h @@ -114,6 +114,7 @@ #define VLC_CODEC_AMV VLC_FOURCC('A','M','V',' ') #define VLC_CODEC_INDEO5 VLC_FOURCC('I','V','5','0') #define VLC_CODEC_VP8 VLC_FOURCC('V','P','8','0') +#define VLC_CODEC_JPEG2000 VLC_FOURCC('J','P','2','K') /* Planar YUV 4:1:0 Y:V:U */ diff --git a/modules/codec/avcodec/fourcc.c b/modules/codec/avcodec/fourcc.c index 3dce028..e47828f 100644 --- a/modules/codec/avcodec/fourcc.c +++ b/modules/codec/avcodec/fourcc.c @@ -261,6 +261,7 @@ static const struct { VLC_CODEC_GIF, CODEC_ID_GIF, VIDEO_ES }, { VLC_CODEC_TARGA, CODEC_ID_TARGA, VIDEO_ES }, { VLC_CODEC_SGI, CODEC_ID_SGI, VIDEO_ES }, + { VLC_CODEC_JPEG2000, CODEC_ID_JPEG2000, VIDEO_ES }, /* * Audio Codecs diff --git a/src/misc/fourcc.c b/src/misc/fourcc.c index 80b8db3..4739ae2 100644 --- a/src/misc/fourcc.c +++ b/src/misc/fourcc.c @@ -786,6 +786,9 @@ static const entry_t p_list_video[] = { B(VLC_CODEC_PCX, "Personal Computer Exchange Image"), A("pcx "), + B(VLC_CODEC_JPEG2000, "JPEG 2000 Image"), + A("mjp2"), + B(0, "") }; static const entry_t p_list_audio[] = { -- 1.7.1 From googuy at gmail.com Fri Jun 25 11:15:24 2010 From: googuy at gmail.com (=?ISO-8859-1?Q?Vicente_Jim=E9nez?=) Date: Fri, 25 Jun 2010 11:15:24 +0200 Subject: [vlc-devel] MPEG-21 File Format support for VLC: Please assist In-Reply-To: <4C244145.70707@yahoo.de> References: <4C23B834.5070809@yahoo.de> <20100624205123.GD6356@linux-3azp> <4C244145.70707@yahoo.de> Message-ID: If mp4 and m21/mp21 files has a lot in common. Maybe all that is part of ISO Base Media File standard. It could be a good idea to have all those functionalities/functions out of the mp4 demuxer and putted into a new file that could be shared between mp4 and mp21 demuxers. Cheers, vicente From jb at videolan.org Fri Jun 25 11:22:51 2010 From: jb at videolan.org (Jean-Baptiste Kempf) Date: Fri, 25 Jun 2010 11:22:51 +0200 Subject: [vlc-devel] [PATCH] JPEG 2000 decoding support. In-Reply-To: <1277454559-12576-1-git-send-email-jmenon86@gmail.com> References: <1277454559-12576-1-git-send-email-jmenon86@gmail.com> Message-ID: <20100625092251.GA18511@videolan.org> On Fri, Jun 25, 2010 at 01:59:19PM +0530, Jai Menon wrote : > Adds a JPEG 2000 fourcc and hooks it up to the libavcodec decoder. Applied. Best Regards, -- Jean-Baptiste Kempf http://www.jbkempf.com/ From jb at videolan.org Fri Jun 25 11:24:26 2010 From: jb at videolan.org (Jean-Baptiste Kempf) Date: Fri, 25 Jun 2010 11:24:26 +0200 Subject: [vlc-devel] [vlc-commits] commit: Add adjust filter features to libvlc_media_player/libvlc_video ( Frank Enderle ) In-Reply-To: <20100624001748.013AFF9B8E@albiero.videolan.org> References: <20100624001748.013AFF9B8E@albiero.videolan.org> Message-ID: <20100625092426.GB18511@videolan.org> Hi, On Thu, Jun 24, 2010 at 02:17:47AM +0200, git at videolan.org wrote : > This patch exposes the adjust module to libvlc_media_player/libvlc_video > and adds a frequently requested featureset: to manipulate brightness, > contrast, gamma, saturation and hue through libvlc. The patch introduces > a new set of functions analogous to I know this is quite controversial, but these functions are asked so much everywhere when we speak about libvlc... So, should we backport this to 1.1.1 ? Best, -- Jean-Baptiste Kempf http://www.jbkempf.com/ From frank.enderle at anamica.de Fri Jun 25 11:26:58 2010 From: frank.enderle at anamica.de (Frank Enderle) Date: Fri, 25 Jun 2010 11:26:58 +0200 Subject: [vlc-devel] [vlc-commits] commit: Add adjust filter features to libvlc_media_player/libvlc_video ( Frank Enderle ) In-Reply-To: <20100625092426.GB18511@videolan.org> References: <20100624001748.013AFF9B8E@albiero.videolan.org> <20100625092426.GB18511@videolan.org> Message-ID: <4C247662.1050505@anamica.de> Hi, since I use 1.1.0 stable myself I would vote for yes. Anyway the patch is small and not complicated - I guess it would not hurt and many libvlc users would be happy about it.. Regards, Frank Am 25.06.2010 11:24, schrieb Jean-Baptiste Kempf: > Hi, > > On Thu, Jun 24, 2010 at 02:17:47AM +0200, git at videolan.org wrote : >> This patch exposes the adjust module to libvlc_media_player/libvlc_video >> and adds a frequently requested featureset: to manipulate brightness, >> contrast, gamma, saturation and hue through libvlc. The patch introduces >> a new set of functions analogous to > > I know this is quite controversial, but these functions are asked so much everywhere > when we speak about libvlc... > > So, should we backport this to 1.1.1 ? > > Best, > -- Dipl.-Ing. (FH) Frank Enderle anamica UG (haftungsbeschr?nkt) Beinsteinerstr. 6 71334 Waiblingen Telefon: +49 151 14981091 Telefax: +49 7151 1335770 E-Mail: frank.enderle at anamica.de Internet: www.anamica.de Handelsregister: AG Stuttgart HRB 732357 Gesch?ftsf?hrer: Yvonne Holzwarth, Frank Enderle From dmenest at veetle.com Fri Jun 25 09:13:07 2010 From: dmenest at veetle.com (David Menestrina) Date: Fri, 25 Jun 2010 00:13:07 -0700 (PDT) Subject: [vlc-devel] xcb/window.c fullscreen in mozilla plugin In-Reply-To: <201006250707.54124.remi@remlab.net> References: <201006250707.54124.remi@remlab.net> Message-ID: Thanks for your comments, Remi. I agree that the application that embeds VLC *should* handle fullscreen... unfortunately there's no way for the browser plugin to tell the browser to make the plugin window fullscreen. Do you think the mozilla plugin should handle fullscreen itself rather than asking VLC to do it? As for reparenting, the window we're reparenting is actually a window created by the mozilla plugin itself (in vlcshell.cpp:NPP_SetWindow). So I think, at least for the mozilla plugin, the reparenting approach should be safe. I think you're right that event handling is an issue... in the 30% of the time when the reparenting succeeds, I do notice that there's no easy way out of fullscreen mode. :) One other question... I noticed that in older versions of the plugin, when you resize the plugin window via javascript, the video is resized appropriately. In VLC 1.1, the resize instead crops the video. The mozilla plugin is notified of the resize event, but it (currently) doesn't notify VLC that anything has changed. Do you have any thoughts on the right way for VLC to realize that the window it's drawing into has changed size? Thank you! david From jameskairton at hotmail.com Fri Jun 25 10:57:26 2010 From: jameskairton at hotmail.com (James Kairton) Date: Fri, 25 Jun 2010 08:57:26 +0000 Subject: [vlc-devel] [Bug Report] VLC for Maemo 5 (vlc_1.1.0~rc2.34-1_armel.deb) Message-ID: Hi, I thought I'd share a couple of issues found in the latest build of VLC for Maemo, found at: http://download.videolan.org/pub/videolan/maemo/vlc/. Most of the testing and findings are posted here on the maemo.org forums: http://talk.maemo.org/showthread.php?t=33739&page=24 First of all, I found with this release that RTSP support is broken. In comparison to the version found here: http://www.remlab.net/files/vlc/fremantle/ vlc_1.1.0~git5935-1_armel.deb, as well as the Yellow Bastard release vlc_1.1.0~git-3049-1_armel.deb. These versions was able to play rtsp streams, as well as rtsp-http tunneling, but the current version is unable to play any rtsp streams. Secondly, there is a problem starting the GUI. Here is a re-post of the fix from the forums: The GUI works, but only launchable from Xterm using vlc command (the icon clears the screen and doesnt do much).The reason why it doesn't work is because some of the symbolic links point to the icons in their optified locations that don't exist. The icon for the desktop file is also missing. To fix this ssue, you need to remove the symbolic links for these files with root privledges, namely: Code: rm /usr/share/icons/hicolor/16x16/hildon/vlc.png rm /usr/share/icons/hicolor/48x48/hildon/vlc.png rm /usr/share/icons/hicolor/128x128/hildon/vlc.png and give your device a reboot so it can find the icon. Thanks for all your work on this great software - it is turning the N900 into the ultimate portable media player! Regards, DG _________________________________________________________________ http://clk.atdmt.com/UKM/go/197222280/direct/01/ Do you have a story that started on Hotmail? Tell us now -------------- next part -------------- An HTML attachment was scrubbed... URL: From ileoo at videolan.org Fri Jun 25 15:54:29 2010 From: ileoo at videolan.org (Ilkka Ollakka) Date: Fri, 25 Jun 2010 16:54:29 +0300 Subject: [vlc-devel] [vlc-commits] commit: Qt4: check that index.isValid too (Ilkka Ollakka ) In-Reply-To: References: <20100624211828.221EFFA1F5@albiero.videolan.org> Message-ID: <20100625135429.GA14911@linux-3azp> On Fri, Jun 25, 2010 at 01:01:30AM +0200, Jakob Leben wrote: > I don't see a reason for this. Invalid QModelIndex does not mean an error or > something like that, but means the top item. It is invalid simply because it > has no parent, therefore can not have a column and row position within any > parent. Actually I was just lazy and wanted to make quick check if isParent is called with just QModelIndex() (doesn't happen in current codepath). Didn't tought that isValid() wouldn't be true on some valid indexes. Youre free to revert/change that, as I'm kinda far away currently. -- Ilkka Ollakka Do not read this fortune under penalty of law. Violators will be prosecuted. (Penal Code sec. 2.3.2 (II.a.)) -------------- next part -------------- A non-text attachment was scrubbed... Name: not available Type: application/pgp-signature Size: 490 bytes Desc: not available URL: From remi at remlab.net Fri Jun 25 17:36:09 2010 From: remi at remlab.net (=?UTF-8?Q?R=C3=A9mi_Denis-Courmont?=) Date: Fri, 25 Jun 2010 17:36:09 +0200 Subject: [vlc-devel] [VLC] #3793: Modplug module doesn't work at all. In-Reply-To: <051.4e5e99a51b755e234e78205d3275144e@videolan.org> References: <042.a732203764f443ee2984fdadd845c91a@videolan.org> <051.4e5e99a51b755e234e78205d3275144e@videolan.org> Message-ID: <5d27aa77320ffc40261305a571b3d331@chewa.net> On Fri, 25 Jun 2010 07:14:10 -0000, "VLC" wrote: > #3793: Modplug module doesn't work at all. > -----------------------+---------------------------------------------------- > Reporter: jb | Owner: fenrir > Type: defect | Status: closed > Priority: normal | Milestone: 1.1.1 > Component: Demuxers | Version: master > Severity: normal | Resolution: worksforme > Keywords: | Platform: all > Difficulty: unknown | Wip: Not started > -----------------------+---------------------------------------------------- > > Comment(by jb): > > Seriously, what is wrong with you? So that's how you treat people who are painstakingly checking bug reports. Thanks a lot JB, much appreciated. Very good constructive behavior. > It doesn't work here and produce no sound. It works here and it produces (correct) sound. -- R?mi Denis-Courmont http://www.remlab.net http://fi.linkedin.com/in/remidenis From remi at remlab.net Fri Jun 25 17:41:37 2010 From: remi at remlab.net (=?UTF-8?Q?R=C3=A9mi_Denis-Courmont?=) Date: Fri, 25 Jun 2010 17:41:37 +0200 Subject: [vlc-devel] [VLC] #3800: Subtitle character encoding autodetection returns wrong value under Win32 In-Reply-To: <057.8793228756604cefed8808fe9929fd0e@videolan.org> References: <048.bec10042b572fff47102283877ec65de@videolan.org> <057.8793228756604cefed8808fe9929fd0e@videolan.org> Message-ID: On Fri, 25 Jun 2010 07:17:19 -0000, "VLC" wrote: > #3800: Subtitle character encoding autodetection returns wrong value under > Win32 > -----------------------+---------------------------------------------------- > Reporter: VLC_help | Owner: courmisch > Type: defect | Status: closed > Priority: high | Milestone: 1.1.1 > Component: LibVLC | Version: master > Severity: normal | Resolution: invalid > Keywords: | Platform: all > Difficulty: unknown | Wip: Not started > -----------------------+---------------------------------------------------- > > Comment(by jb): > > Come on, EVERYwhere people complain about subtitles autodetection. I wrote the subtitle auto-detection (in 0.8.something). I think I know better than you or forum whiners how it works. Not to mention that we discussed it on translators@ not so long ago. But since you think you're the smartest guy here, check for yourself. Set your VLC to Romanian language (LC_MESSAGES=ro_RO.UTF-8), open a Romanian subtitles file encoded in CP-1250 and see that it works fine. By the way, the language-based logic is the same as in earlier version. I know that because I wrote both the old (<= 1.0) and the new (>= 1.1) one. I can't say I'm happy with your attitude. -- R?mi Denis-Courmont http://www.remlab.net http://fi.linkedin.com/in/remidenis From remi at remlab.net Fri Jun 25 17:43:31 2010 From: remi at remlab.net (=?UTF-8?Q?R=C3=A9mi_Denis-Courmont?=) Date: Fri, 25 Jun 2010 17:43:31 +0200 Subject: [vlc-devel] [VLC] #3800: Subtitle character encoding autodetection returns wrong value under Win32 In-Reply-To: References: <048.bec10042b572fff47102283877ec65de@videolan.org> <057.8793228756604cefed8808fe9929fd0e@videolan.org> Message-ID: <80ed1dfb736a00fabda893ddb1d423b4@chewa.net> On Fri, 25 Jun 2010 17:41:37 +0200, R?mi Denis-Courmont wrote: > > On Fri, 25 Jun 2010 07:17:19 -0000, "VLC" wrote: >> #3800: Subtitle character encoding autodetection returns wrong value > under >> Win32 >> > -----------------------+---------------------------------------------------- >> Reporter: VLC_help | Owner: courmisch >> Type: defect | Status: closed >> Priority: high | Milestone: 1.1.1 >> Component: LibVLC | Version: master >> Severity: normal | Resolution: invalid >> Keywords: | Platform: all >> Difficulty: unknown | Wip: Not started >> > -----------------------+---------------------------------------------------- >> >> Comment(by jb): >> >> Come on, EVERYwhere people complain about subtitles autodetection. > > I wrote the subtitle auto-detection (in 0.8.something). I think I know > better than you or forum whiners how it works. Not to mention that we > discussed it on translators@ not so long ago. > > But since you think you're the smartest guy here, check for yourself. Set > your VLC to Romanian language (LC_MESSAGES=ro_RO.UTF-8), I don't need to mention that you need the Romanian localization installed, so that VLC actually shows in Romanian. I am sure you will manage since you seem to think you are so much smarter than I am( and Romanian is a romance language anyway). -- R?mi Denis-Courmont http://www.remlab.net http://fi.linkedin.com/in/remidenis From jb at videolan.org Fri Jun 25 17:56:14 2010 From: jb at videolan.org (Jean-Baptiste Kempf) Date: Fri, 25 Jun 2010 17:56:14 +0200 Subject: [vlc-devel] [VLC] #3793: Modplug module doesn't work at all. In-Reply-To: <5d27aa77320ffc40261305a571b3d331@chewa.net> References: <042.a732203764f443ee2984fdadd845c91a@videolan.org> <051.4e5e99a51b755e234e78205d3275144e@videolan.org> <5d27aa77320ffc40261305a571b3d331@chewa.net> Message-ID: <20100625155614.GA28061@videolan.org> On Fri, Jun 25, 2010 at 05:36:09PM +0200, R?mi Denis-Courmont wrote : > > Seriously, what is wrong with you? > > So that's how you treat people who are painstakingly checking bug reports. > > Thanks a lot JB, much appreciated. Very good constructive behavior. Sorry, but if I opened the bug, there must have been a reason. However, you have a point, I shouldn't have answer like this. Please accept my excuse. > > It doesn't work here and produce no sound. > > It works here and it produces (correct) sound. It doesn't work on VLC 1.1.0 on Win32 XP and 7. It doesn't work on Mac OS X.6.3. It doesn't work on my machine Linux, both 1.1 and master. There must be an issue, and I would like it fixed, in the best way possible. Best Regards, -- Jean-Baptiste Kempf http://www.jbkempf.com/ From jb at videolan.org Fri Jun 25 18:00:00 2010 From: jb at videolan.org (Jean-Baptiste Kempf) Date: Fri, 25 Jun 2010 18:00:00 +0200 Subject: [vlc-devel] [VLC] #3800: Subtitle character encoding autodetection returns wrong value under Win32 In-Reply-To: References: <048.bec10042b572fff47102283877ec65de@videolan.org> <057.8793228756604cefed8808fe9929fd0e@videolan.org> Message-ID: <20100625160000.GA28992@videolan.org> On Fri, Jun 25, 2010 at 05:41:37PM +0200, R?mi Denis-Courmont wrote : > I wrote the subtitle auto-detection (in 0.8.something). I think I know > better than you or forum whiners how it works. Not to mention that we > discussed it on translators@ not so long ago. Oh, yes you do. Still so many people complain that something must be wrong and it might be just the same issue as the wrong language translation on some Win32 machine. > But since you think you're the smartest guy here, check for yourself. Set > your VLC to Romanian language (LC_MESSAGES=ro_RO.UTF-8), open a Romanian > subtitles file encoded in CP-1250 and see that it works fine. By the way, > the language-based logic is the same as in earlier version. I know that > because I wrote both the old (<= 1.0) and the new (>= 1.1) one. Yes, on linux... The windows is still broken for whatever reason, and it might be something else than just the subtitles. > I can't say I'm happy with your attitude. Sorry. Best Regards, -- Jean-Baptiste Kempf http://www.jbkempf.com/ From jmenon86 at gmail.com Fri Jun 25 18:02:56 2010 From: jmenon86 at gmail.com (Jai Menon) Date: Fri, 25 Jun 2010 21:32:56 +0530 Subject: [vlc-devel] [VLC] #3793: Modplug module doesn't work at all. In-Reply-To: <20100625155614.GA28061@videolan.org> References: <042.a732203764f443ee2984fdadd845c91a@videolan.org> <051.4e5e99a51b755e234e78205d3275144e@videolan.org> <5d27aa77320ffc40261305a571b3d331@chewa.net> <20100625155614.GA28061@videolan.org> Message-ID: On Fri, Jun 25, 2010 at 9:26 PM, Jean-Baptiste Kempf wrote: > On Fri, Jun 25, 2010 at 05:36:09PM +0200, R?mi Denis-Courmont wrote : [...] >> > ?It doesn't work here and produce no sound. >> >> It works here and it produces (correct) sound. > > It doesn't work on VLC 1.1.0 on Win32 XP and 7. It doesn't work on Mac > OS X.6.3. It doesn't work on my machine Linux, both 1.1 and master. > > There must be an issue, and I would like it fixed, in the best way > possible. FWIW, it does work here with libmodplug 0.8.8.1 and vlc git-master. Maybe some older version has problems? -- Jai Menon From jb at videolan.org Fri Jun 25 18:10:10 2010 From: jb at videolan.org (Jean-Baptiste Kempf) Date: Fri, 25 Jun 2010 18:10:10 +0200 Subject: [vlc-devel] [VLC] #3793: Modplug module doesn't work at all. In-Reply-To: References: <042.a732203764f443ee2984fdadd845c91a@videolan.org> <051.4e5e99a51b755e234e78205d3275144e@videolan.org> <5d27aa77320ffc40261305a571b3d331@chewa.net> <20100625155614.GA28061@videolan.org> Message-ID: <20100625161010.GA29736@videolan.org> On Fri, Jun 25, 2010 at 09:32:56PM +0530, Jai Menon wrote : > On Fri, Jun 25, 2010 at 9:26 PM, Jean-Baptiste Kempf wrote: > > On Fri, Jun 25, 2010 at 05:36:09PM +0200, R?mi Denis-Courmont wrote : > > [...] > > >> > ?It doesn't work here and produce no sound. > >> > >> It works here and it produces (correct) sound. > > > > It doesn't work on VLC 1.1.0 on Win32 XP and 7. It doesn't work on Mac > > OS X.6.3. It doesn't work on my machine Linux, both 1.1 and master. > > > > There must be an issue, and I would like it fixed, in the best way > > possible. > > FWIW, it does work here with libmodplug 0.8.8.1 and vlc git-master. > Maybe some older version has problems? Hmmm. Maybe 0.8.8.0 was a bad release then. I'll try to update contribs with 0.8.8.1. Best Regards, -- Jean-Baptiste Kempf http://www.jbkempf.com/ From remi at remlab.net Fri Jun 25 18:12:42 2010 From: remi at remlab.net (=?UTF-8?Q?R=C3=A9mi_Denis-Courmont?=) Date: Fri, 25 Jun 2010 18:12:42 +0200 Subject: [vlc-devel] [VLC] #3793: Modplug module doesn't work at all. In-Reply-To: <20100625161010.GA29736@videolan.org> References: <042.a732203764f443ee2984fdadd845c91a@videolan.org> <051.4e5e99a51b755e234e78205d3275144e@videolan.org> <5d27aa77320ffc40261305a571b3d331@chewa.net> <20100625155614.GA28061@videolan.org> <20100625161010.GA29736@videolan.org> Message-ID: <390680632d11ce73175e83ba5e0b1fb5@chewa.net> On Fri, 25 Jun 2010 18:10:10 +0200, Jean-Baptiste Kempf wrote: >> FWIW, it does work here with libmodplug 0.8.8.1 and vlc git-master. >> Maybe some older version has problems? > > Hmmm. Maybe 0.8.8.0 was a bad release then. I'll try to update contribs > with 0.8.8.1. Ubuntu 0.8.7 works fine. Note that MOD file detection is unreliable. Laurent seems to have put quite some time into it, but ultimately the file format is simply broken (it has no magic number). S3M and IT files should work much more reliably. -- R?mi Denis-Courmont http://www.remlab.net http://fi.linkedin.com/in/remidenis From remi at remlab.net Fri Jun 25 18:18:17 2010 From: remi at remlab.net (=?UTF-8?Q?R=C3=A9mi_Denis-Courmont?=) Date: Fri, 25 Jun 2010 18:18:17 +0200 Subject: [vlc-devel] =?utf-8?q?=5BVLC=5D_=233800=3A_Subtitle_character_enc?= =?utf-8?q?oding=09autodetection_returns_wrong_value_under_Win32?= In-Reply-To: <20100625160000.GA28992@videolan.org> References: <048.bec10042b572fff47102283877ec65de@videolan.org> <057.8793228756604cefed8808fe9929fd0e@videolan.org> <20100625160000.GA28992@videolan.org> Message-ID: <74713b3a93ef2a2eb8b47588c6a2eabc@chewa.net> On Fri, 25 Jun 2010 18:00:00 +0200, Jean-Baptiste Kempf wrote: > On Fri, Jun 25, 2010 at 05:41:37PM +0200, R?mi Denis-Courmont wrote : >> I wrote the subtitle auto-detection (in 0.8.something). I think I know >> better than you or forum whiners how it works. Not to mention that we >> discussed it on translators@ not so long ago. > Oh, yes you do. Still so many people complain that something must be > wrong and it might be just the same issue as the wrong language > translation on some Win32 machine. Unfortunately, I know at least four different problems that can cause this, but none of them are bugs in the character detection. First, incomplete or incorrect translation (PO) files will use CP1252, just like unknown (or not updated) localizations fell back to CP1252 in 1.0 and earlier. Second, some people put their VLC in English because they do not like software localization, but they play subtitles in their mother tongue (not English). That simply cannot work (unless the mother tongue is also a Western European language). We already discussed this in translators. Those people simply have to select the character set in the preference. I already changed the description of the default setting yesterday to clarify that. Third, translations do not work if you run VLC from the build tree. Last, VLC gettext may be broken. I will check that when I have more time. -- R?mi Denis-Courmont http://www.remlab.net http://fi.linkedin.com/in/remidenis From jb at videolan.org Fri Jun 25 18:26:22 2010 From: jb at videolan.org (Jean-Baptiste Kempf) Date: Fri, 25 Jun 2010 18:26:22 +0200 Subject: [vlc-devel] [VLC] #3793: Modplug module doesn't work at all. In-Reply-To: <390680632d11ce73175e83ba5e0b1fb5@chewa.net> References: <042.a732203764f443ee2984fdadd845c91a@videolan.org> <051.4e5e99a51b755e234e78205d3275144e@videolan.org> <5d27aa77320ffc40261305a571b3d331@chewa.net> <20100625155614.GA28061@videolan.org> <20100625161010.GA29736@videolan.org> <390680632d11ce73175e83ba5e0b1fb5@chewa.net> Message-ID: <20100625162622.GA2894@videolan.org> On Fri, Jun 25, 2010 at 06:12:42PM +0200, R?mi Denis-Courmont wrote : > > On Fri, 25 Jun 2010 18:10:10 +0200, Jean-Baptiste Kempf > wrote: > >> FWIW, it does work here with libmodplug 0.8.8.1 and vlc git-master. > >> Maybe some older version has problems? > > > > Hmmm. Maybe 0.8.8.0 was a bad release then. I'll try to update contribs > > with 0.8.8.1. > > Ubuntu 0.8.7 works fine. Solved. 0.8.7 works on Win32. 0.8.8.1 works on Win32. 0.8.8.0 doesn't. Best Regards, -- Jean-Baptiste Kempf http://www.jbkempf.com/ From remi at remlab.net Fri Jun 25 19:19:21 2010 From: remi at remlab.net (=?UTF-8?Q?R=C3=A9mi_Denis-Courmont?=) Date: Fri, 25 Jun 2010 19:19:21 +0200 Subject: [vlc-devel] =?utf-8?q?=5Bvlc-commits=5D_commit=3A_Add_adjust_filt?= =?utf-8?q?er_features_to=09libvlc=5Fmedia=5Fplayer/libvlc=5Fvideo_=28_Fra?= =?utf-8?q?nk_Enderle_=29?= In-Reply-To: <20100625092426.GB18511@videolan.org> References: <20100624001748.013AFF9B8E@albiero.videolan.org> <20100625092426.GB18511@videolan.org> Message-ID: On Fri, 25 Jun 2010 11:24:26 +0200, Jean-Baptiste Kempf wrote: > On Thu, Jun 24, 2010 at 02:17:47AM +0200, git at videolan.org wrote : >> This patch exposes the adjust module to libvlc_media_player/libvlc_video >> and adds a frequently requested featureset: to manipulate brightness, >> contrast, gamma, saturation and hue through libvlc. The patch introduces >> a new set of functions analogous to > > I know this is quite controversial, I don't really think so. Adding new functions is not a problem. Besides, this does not change any existing code path, so it can hardly introduce any regression. We just need to get the library version numbering right. > but these functions are asked so much > everywhere when we speak about libvlc... > > So, should we backport this to 1.1.1 ? -- R?mi Denis-Courmont http://www.remlab.net http://fi.linkedin.com/in/remidenis From jb at videolan.org Fri Jun 25 19:53:42 2010 From: jb at videolan.org (Jean-Baptiste Kempf) Date: Fri, 25 Jun 2010 19:53:42 +0200 Subject: [vlc-devel] [vlc-commits] commit: Add adjust filter features to?libvlc_media_player/libvlc_video ( Frank Enderle ) In-Reply-To: References: <20100624001748.013AFF9B8E@albiero.videolan.org> <20100625092426.GB18511@videolan.org> Message-ID: <20100625175342.GA9137@videolan.org> On Fri, Jun 25, 2010 at 07:19:21PM +0200, R?mi Denis-Courmont wrote : > I don't really think so. Adding new functions is not a problem. Besides, > this does not change any existing code path, so it can hardly introduce any > regression. If I have your OK and Laurent's, then I'll try to backport. > We just need to get the library version numbering right. /me whistles... Best Regards, -- Jean-Baptiste Kempf http://www.jbkempf.com/ From dmenest at veetle.com Fri Jun 25 20:01:57 2010 From: dmenest at veetle.com (David Menestrina) Date: Fri, 25 Jun 2010 11:01:57 -0700 (PDT) Subject: [vlc-devel] xcb/window.c fullscreen in mozilla plugin In-Reply-To: References: <201006250707.54124.remi@remlab.net> Message-ID: On Fri, 25 Jun 2010, David Menestrina wrote: > One other question... I noticed that in older versions of the plugin, when > you resize the plugin window via javascript, the video is resized > appropriately. In VLC 1.1, the resize instead crops the video. The mozilla > plugin is notified of the resize event, but it (currently) doesn't notify VLC > that anything has changed. Do you have any thoughts on the right way for VLC > to realize that the window it's drawing into has changed size? Nevermind on this question, I figured it out myself. (Since the plugin is now creating its own window, it needs to resize the window itself.) Thanks, david From remi at remlab.net Fri Jun 25 20:07:30 2010 From: remi at remlab.net (=?UTF-8?Q?R=C3=A9mi_Denis-Courmont?=) Date: Fri, 25 Jun 2010 20:07:30 +0200 Subject: [vlc-devel] =?utf-8?q?=5BBug_Report=5D_VLC_for_Maemo_5_=28vlc=5F1?= =?utf-8?b?LjEuMH5yYzIuMzQtMV9hcm1lbC5kZWIp?= In-Reply-To: References: Message-ID: <0b74974e2f730615589ace61ea020270@chewa.net> Hello, On Fri, 25 Jun 2010 08:57:26 +0000, James Kairton wrote: > First of all, I found with this release that RTSP support is broken. In > comparison to the version found here: > http://www.remlab.net/files/vlc/fremantle/ That is probably a regression in live555. Unfortunately, the maintainer of that package has consistently refused to implement any kind of sane version control scheme... So either a trivial update of the package will fix the issue, or we are screwed. > Code: > rm /usr/share/icons/hicolor/16x16/hildon/vlc.png > rm /usr/share/icons/hicolor/48x48/hildon/vlc.png > rm /usr/share/icons/hicolor/128x128/hildon/vlc.png > > and give your device a reboot so it can find the icon. I think there is another way to update the icons, but I did not look it up in the documentation. It makes no sense to reboot the whole device. > Thanks for all your work on this great software - it is turning the > N900 into the ultimate portable media player! I am not so enthusiastic. VLC is quite slow on N900, except for audio playback and for the three DSP-accelerated video codecs. It seems something is wrong with the FFmpeg wrapper inside VLC but nobody has ever had all of time, hardware and skills to investigate the problem this far. As a reference, decoding MPEG2 Video with plain raw FFmpeg is way faster than with VLC. -- R?mi Denis-Courmont http://www.remlab.net http://fi.linkedin.com/in/remidenis From rafael.carre at gmail.com Fri Jun 25 21:25:03 2010 From: rafael.carre at gmail.com (=?UTF-8?q?Rafa=C3=ABl=20Carr=C3=A9?=) Date: Fri, 25 Jun 2010 21:25:03 +0200 Subject: [vlc-devel] [PATCH] Disable faad, lower priority of decoder below avcodec Message-ID: <1277493903-6356-1-git-send-email-rafael.carre@gmail.com> --- configure.ac | 6 ++---- modules/codec/faad.c | 2 +- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/configure.ac b/configure.ac index 1a428e7..79c768d 100644 --- a/configure.ac +++ b/configure.ac @@ -245,8 +245,6 @@ case "${host_os}" in ac_default_prefix="${build_dir}/vlc_install_dir" enable_macosx="yes" echo " Assuming --enable-macosx" - enable_faad="yes" - echo " Assuming --enable-faad" enable_flac="yes" echo " Assuming --enable-flac" enable_theora="yes" @@ -2833,8 +2831,8 @@ dnl dnl faad decoder plugin dnl AC_ARG_ENABLE(faad, -[ --enable-faad faad codec (default disabled)]) -if test "${enable_faad}" = "yes" +[ --disable-faad faad codec (default disabled)]) +if test "${enable_faad}" != "no" then AC_ARG_WITH(faad-tree, [ --with-faad-tree=PATH faad tree for static linking]) diff --git a/modules/codec/faad.c b/modules/codec/faad.c index 7bda944..1f27da6 100644 --- a/modules/codec/faad.c +++ b/modules/codec/faad.c @@ -43,7 +43,7 @@ static void Close( vlc_object_t * ); vlc_module_begin () set_description( N_("AAC audio decoder (using libfaad2)") ) - set_capability( "decoder", 100 ) + set_capability( "decoder", 50 ) set_category( CAT_INPUT ) set_subcategory( SUBCAT_INPUT_ACODEC ) set_callbacks( Open, Close ) -- 1.7.0.4 From rafael.carre at gmail.com Fri Jun 25 21:28:12 2010 From: rafael.carre at gmail.com (=?UTF-8?B?UmFmYcOrbCBDYXJyw6k=?=) Date: Fri, 25 Jun 2010 21:28:12 +0200 Subject: [vlc-devel] [PATCH] Disable faad, lower priority of decoder below avcodec In-Reply-To: <1277493903-6356-1-git-send-email-rafael.carre@gmail.com> References: <1277493903-6356-1-git-send-email-rafael.carre@gmail.com> Message-ID: <20100625212812.52f05daf@kru> On Fri, 25 Jun 2010 21:25:03 +0200 Rafa?l Carr? wrote: > --- > configure.ac | 6 ++---- > modules/codec/faad.c | 2 +- > 2 files changed, 3 insertions(+), 5 deletions(-) I forgot to mention that FFmpeg decoder should be complete because they removed the faad wrapper Didn't make any benchmark though -- ? Rafa?l Carr? ? -------------- next part -------------- A non-text attachment was scrubbed... Name: signature.asc Type: application/pgp-signature Size: 198 bytes Desc: not available URL: From remi at remlab.net Fri Jun 25 21:29:01 2010 From: remi at remlab.net (=?UTF-8?Q?R=C3=A9mi_Denis-Courmont?=) Date: Fri, 25 Jun 2010 21:29:01 +0200 Subject: [vlc-devel] [PATCH] Disable faad, lower priority of decoder below avcodec In-Reply-To: <1277493903-6356-1-git-send-email-rafael.carre@gmail.com> References: <1277493903-6356-1-git-send-email-rafael.carre@gmail.com> Message-ID: <636e0e5461096dd70ad1d9db536934ab@chewa.net> On Fri, 25 Jun 2010 21:25:03 +0200, Rafa?l Carr? wrote: > @@ -2833,8 +2831,8 @@ dnl > dnl faad decoder plugin > dnl > AC_ARG_ENABLE(faad, > -[ --enable-faad faad codec (default disabled)]) > -if test "${enable_faad}" = "yes" > +[ --disable-faad faad codec (default disabled)]) > +if test "${enable_faad}" != "no" The description needs to be updated too. But why should a useless plug-in be enabled by default? > @@ -43,7 +43,7 @@ static void Close( vlc_object_t * ); > > vlc_module_begin () > set_description( N_("AAC audio decoder (using libfaad2)") ) > - set_capability( "decoder", 100 ) > + set_capability( "decoder", 50 ) I dunno. What's the use of a codec that will always be preempted by FFmpeg? To me, it sounds like we should remove the plugin completely instead, as well as for libmpeg2 by the way. -- R?mi Denis-Courmont http://www.remlab.net http://fi.linkedin.com/in/remidenis From rafael.carre at gmail.com Fri Jun 25 21:36:23 2010 From: rafael.carre at gmail.com (=?UTF-8?B?UmFmYcOrbCBDYXJyw6k=?=) Date: Fri, 25 Jun 2010 21:36:23 +0200 Subject: [vlc-devel] [PATCH] Disable faad, lower priority of decoder below avcodec In-Reply-To: <636e0e5461096dd70ad1d9db536934ab@chewa.net> References: <1277493903-6356-1-git-send-email-rafael.carre@gmail.com> <636e0e5461096dd70ad1d9db536934ab@chewa.net> Message-ID: <20100625213623.6e35c345@kru> On Fri, 25 Jun 2010 21:29:01 +0200 R?mi Denis-Courmont wrote: > > On Fri, 25 Jun 2010 21:25:03 +0200, Rafa?l Carr? > wrote: > > @@ -2833,8 +2831,8 @@ dnl > > dnl faad decoder plugin > > dnl > > AC_ARG_ENABLE(faad, > > -[ --enable-faad faad codec (default disabled)]) > > -if test "${enable_faad}" = "yes" > > +[ --disable-faad faad codec (default disabled)]) > > +if test "${enable_faad}" != "no" > > The description needs to be updated too. But why should a useless > plug-in be enabled by default? Oops, the description doesn't need to be updated, the whole configure.ac diff must be discarded instead (i just thought faad was enabled by default and didn't read the code) > > @@ -43,7 +43,7 @@ static void Close( vlc_object_t * ); > > > > vlc_module_begin () > > set_description( N_("AAC audio decoder (using libfaad2)") ) > > - set_capability( "decoder", 100 ) > > + set_capability( "decoder", 50 ) > > I dunno. What's the use of a codec that will always be preempted by > FFmpeg? To me, it sounds like we should remove the plugin completely > instead, as well as for libmpeg2 by the way. Yeah that's what i wanted to do, but I guess it doesn't harm to still have the source around About libmpeg2 iirc fenrir said our decoder had features that ffmpeg decoder hasn't. -- ? Rafa?l Carr? ? -------------- next part -------------- A non-text attachment was scrubbed... Name: signature.asc Type: application/pgp-signature Size: 198 bytes Desc: not available URL: From rafael.carre at gmail.com Fri Jun 25 21:42:46 2010 From: rafael.carre at gmail.com (=?UTF-8?B?UmFmYcOrbCBDYXJyw6k=?=) Date: Fri, 25 Jun 2010 21:42:46 +0200 Subject: [vlc-devel] [PATCH] Disable faad, lower priority of decoder below avcodec In-Reply-To: <636e0e5461096dd70ad1d9db536934ab@chewa.net> References: <1277493903-6356-1-git-send-email-rafael.carre@gmail.com> <636e0e5461096dd70ad1d9db536934ab@chewa.net> Message-ID: <20100625214246.01ffcbed@kru> On Fri, 25 Jun 2010 21:29:01 +0200 R?mi Denis-Courmont wrote: > To me, it sounds like we should remove the plugin completely instead I was removing faad from extras/contrib/src/Distributions/* and I noticed maemo.mak says: "#.faad -> way slower than libavcodec" Did you try a fixed point build for faad? afaics ffmpeg decoder is float only so perhaps it makes sense to keep faad for targets without FPU -- ? Rafa?l Carr? ? -------------- next part -------------- A non-text attachment was scrubbed... Name: signature.asc Type: application/pgp-signature Size: 198 bytes Desc: not available URL: From rafael.carre at gmail.com Fri Jun 25 21:57:12 2010 From: rafael.carre at gmail.com (=?UTF-8?B?UmFmYcOrbCBDYXJyw6k=?=) Date: Fri, 25 Jun 2010 21:57:12 +0200 Subject: [vlc-devel] Libvlc: bump SO minor version Message-ID: <20100625215712.3e6d4db7@kru> On Thu, 24 Jun 2010 03:18:25 +0300 R?mi Denis-Courmont wrote: > - -version-info 5:0:0 \ > + -version-info 6:0:1 \ is that a typo ? ^ -------------------------------- BTW I'm not subscribed to vlc-commits, usually i import the email with all the needed fields from gmane, but http://dir.gmane.org/search.php?match=videolan doesn't list vlc.commits Any idea on how gmane choose the lists to archive? -- ? Rafa?l Carr? ? -------------- next part -------------- A non-text attachment was scrubbed... Name: signature.asc Type: application/pgp-signature Size: 198 bytes Desc: not available URL: From finlayson at live555.com Fri Jun 25 21:57:23 2010 From: finlayson at live555.com (Ross Finlayson) Date: Fri, 25 Jun 2010 12:57:23 -0700 Subject: [vlc-devel] [Bug Report] VLC for Maemo 5 (vlc_1.1.0~rc2.34-1_armel.deb) In-Reply-To: References: Message-ID: >First of all, I found with this release that RTSP support is broken. >In comparison to the version found here: >http://www.remlab.net/files/vlc/fremantle/ >vlc_1.1.0~git5935-1_armel.deb, as well as the Yellow Bastard release >vlc_1.1.0~git-3049-1_armel.deb. These versions was able to play rtsp >streams, as well as rtsp-http tunneling, but the current version is >unable to play any rtsp streams. Which version of the "LIVE555 Streaming Media" code is used in the old version, and which version is used in the new version (in which you say that RTSP client support does not work)? -- Ross Finlayson Live Networks, Inc. http://www.live555.com/ -------------- next part -------------- An HTML attachment was scrubbed... URL: From remi at remlab.net Fri Jun 25 22:32:27 2010 From: remi at remlab.net (=?UTF-8?Q?R=C3=A9mi_Denis-Courmont?=) Date: Fri, 25 Jun 2010 22:32:27 +0200 Subject: [vlc-devel] [PATCH] Disable faad, lower priority of decoder below avcodec In-Reply-To: <20100625213623.6e35c345@kru> References: <1277493903-6356-1-git-send-email-rafael.carre@gmail.com> <636e0e5461096dd70ad1d9db536934ab@chewa.net> <20100625213623.6e35c345@kru> Message-ID: <0dd286596472b6ba9a1fc9bd67810cbe@chewa.net> On Fri, 25 Jun 2010 21:36:23 +0200, Rafa?l Carr? wrote: > About libmpeg2 iirc fenrir said our decoder had features that ffmpeg > decoder hasn't. It does. But the current decoder does not seem to work anymore (I only get errors out of it). And it remains quite useless if it is not selected by default anyway. -- R?mi Denis-Courmont http://www.remlab.net http://fi.linkedin.com/in/remidenis From remi at remlab.net Fri Jun 25 22:35:36 2010 From: remi at remlab.net (=?UTF-8?Q?R=C3=A9mi_Denis-Courmont?=) Date: Fri, 25 Jun 2010 22:35:36 +0200 Subject: [vlc-devel] Libvlc: bump SO minor version In-Reply-To: <20100625215712.3e6d4db7@kru> References: <20100625215712.3e6d4db7@kru> Message-ID: <39ef14fde43a6d53a769d727629e3021@chewa.net> On Fri, 25 Jun 2010 21:57:12 +0200, Rafa?l Carr? wrote: > On Thu, 24 Jun 2010 03:18:25 +0300 > R?mi Denis-Courmont wrote: > >> - -version-info 5:0:0 \ >> + -version-info 6:0:1 \ > is that a typo ? ^ No. info libtool for you. > Any idea on how gmane choose the lists to archive? There is a form to add new mailing lists IIRC. -- R?mi Denis-Courmont http://www.remlab.net http://fi.linkedin.com/in/remidenis From remi at remlab.net Fri Jun 25 22:36:52 2010 From: remi at remlab.net (=?UTF-8?Q?R=C3=A9mi_Denis-Courmont?=) Date: Fri, 25 Jun 2010 22:36:52 +0200 Subject: [vlc-devel] =?utf-8?q?=5BBug_Report=5D_VLC_for_Maemo_5_=28vlc=5F1?= =?utf-8?b?LjEuMH5yYzIuMzQtMV9hcm1lbC5kZWIp?= In-Reply-To: References: Message-ID: <84f9565b127cdcf34afd9516ea878d7d@chewa.net> On Fri, 25 Jun 2010 12:57:23 -0700, Ross Finlayson wrote: >>First of all, I found with this release that RTSP support is broken. >>In comparison to the version found here: >>http://www.remlab.net/files/vlc/fremantle/ >>vlc_1.1.0~git5935-1_armel.deb, as well as the Yellow Bastard release >>vlc_1.1.0~git-3049-1_armel.deb. These versions was able to play rtsp >>streams, as well as rtsp-http tunneling, but the current version is >>unable to play any rtsp streams. > > Which version of the "LIVE555 Streaming Media" code is used in the > old version, and which version is used in the new version (in which > you say that RTSP client support does not work)? The "latest" back when it was compiled and the "latest" back when it was compiled. That is how painful your (lack of) version control is. -- R?mi Denis-Courmont http://www.remlab.net http://fi.linkedin.com/in/remidenis From logiconcepts819 at gmail.com Fri Jun 25 22:53:12 2010 From: logiconcepts819 at gmail.com (Ron Wright) Date: Fri, 25 Jun 2010 15:53:12 -0500 Subject: [vlc-devel] Dynamic range compressor patch In-Reply-To: References: <201006220353.57723.rem@videolan.org> <20100624190542.GA21497@elivagar.org> Message-ID: Hello, I have made many drastic changes in the compressor.c file and some minor changes in the UI code. Here are some of the changes: 1. Added VLC copyright and $id$ tag to the banner. 2. Made the filter structure, RMS envelope structure, and attack lookup table contiguous in memory so that only one memory allocation and one memory deallocation is needed. 3. Reorganized the functions so that they don't appear out of place. 4. Removed two wasteful members (amplitude and gain reduction) from the filter structure (this is probably used to implement output meters in certain LADSPA frontends). 5. The release of the mutex lock in the DoWork function now occurs immediately after retrieving the shared values. 6. Replaced the logic in the callback functions with clipping functions. 7. Removed useless casts. 8. Changed default values. Attached are the updated compressor core and UI patches. Regards, Ronald Wright -------------- next part -------------- An HTML attachment was scrubbed... URL: -------------- next part -------------- A non-text attachment was scrubbed... Name: vlc-compressor-core.patch Type: application/octet-stream Size: 23624 bytes Desc: not available URL: -------------- next part -------------- A non-text attachment was scrubbed... Name: vlc-compressor-ui.patch Type: application/octet-stream Size: 7903 bytes Desc: not available URL: From logiconcepts819 at gmail.com Fri Jun 25 22:55:56 2010 From: logiconcepts819 at gmail.com (Ron Wright) Date: Fri, 25 Jun 2010 15:55:56 -0500 Subject: [vlc-devel] Dynamic range compressor patch In-Reply-To: References: <201006220353.57723.rem@videolan.org> <20100624190542.GA21497@elivagar.org> Message-ID: Hello, I have made many drastic changes in the compressor.c file and some minor changes in the UI code. Here are some of the changes: 1. Made the filter structure, RMS envelope structure, and attack lookup table contiguous in memory so that only one memory allocation and one memory deallocation is needed. 2. Reorganized the functions so that they don't appear out of place. 3. Removed two wasteful members (amplitude and gain reduction) from the filter structure (this is probably used to implement output meters in certain LADSPA frontends). 4. The release of the mutex lock in the DoWork function now occurs immediately after retrieving the shared values. 5. Replaced the logic in the callback functions with clipping functions. 6. Removed useless casts. 7. Changed default values. Attached are the updated compressor core and UI patches. Regards, Ronald Wright -------------- next part -------------- An HTML attachment was scrubbed... URL: -------------- next part -------------- A non-text attachment was scrubbed... Name: vlc-compressor-core.patch Type: application/octet-stream Size: 23624 bytes Desc: not available URL: -------------- next part -------------- A non-text attachment was scrubbed... Name: vlc-compressor-ui.patch Type: application/octet-stream Size: 7903 bytes Desc: not available URL: From finlayson at live555.com Fri Jun 25 23:23:32 2010 From: finlayson at live555.com (Ross Finlayson) Date: Fri, 25 Jun 2010 14:23:32 -0700 Subject: [vlc-devel] [Bug Report] VLC for Maemo 5 (vlc_1.1.0~rc2.34-1_armel.deb) In-Reply-To: <84f9565b127cdcf34afd9516ea878d7d@chewa.net> References: <84f9565b127cdcf34afd9516ea878d7d@chewa.net> Message-ID: >On Fri, 25 Jun 2010 12:57:23 -0700, Ross Finlayson >wrote: >>>First of all, I found with this release that RTSP support is broken. >>>In comparison to the version found here: >>>http://www.remlab.net/files/vlc/fremantle/ >>>vlc_1.1.0~git5935-1_armel.deb, as well as the Yellow Bastard release >>>vlc_1.1.0~git-3049-1_armel.deb. These versions was able to play rtsp >>>streams, as well as rtsp-http tunneling, but the current version is >>>unable to play any rtsp streams. >> >> Which version of the "LIVE555 Streaming Media" code is used in the >> old version, and which version is used in the new version (in which >> you say that RTSP client support does not work)? > >The "latest" back when it was compiled and the "latest" back when it was >compiled. To see the version of any "LIVE555 Streaming Media" release, look at the value of LIVEMEDIA_LIBRARY_VERSION_STRING defined in the file "liveMedia/include/liveMedia_version.hh". If someone is having problems with RTSP client support in the LIVE555 code, then please let me know: 1/ Which version of the code this is happening with, and 2/ A (publically-accessible) "rtsp://" URL of a stream that illustrates the problem and I will try to address the problem ASAP. -- Ross Finlayson Live Networks, Inc. http://www.live555.com/ From mans at mansr.com Fri Jun 25 23:37:24 2010 From: mans at mansr.com (=?iso-8859-1?Q?M=E5ns_Rullg=E5rd?=) Date: Fri, 25 Jun 2010 22:37:24 +0100 Subject: [vlc-devel] [PATCH] Disable faad, lower priority of decoder below avcodec References: <1277493903-6356-1-git-send-email-rafael.carre@gmail.com> <636e0e5461096dd70ad1d9db536934ab@chewa.net> <20100625213623.6e35c345@kru> <0dd286596472b6ba9a1fc9bd67810cbe@chewa.net> Message-ID: R?mi Denis-Courmont writes: > On Fri, 25 Jun 2010 21:36:23 +0200, Rafa?l Carr? > wrote: >> About libmpeg2 iirc fenrir said our decoder had features that ffmpeg >> decoder hasn't. > > It does. What features? -- M?ns Rullg?rd mans at mansr.com From jb at videolan.org Fri Jun 25 23:44:18 2010 From: jb at videolan.org (Jean-Baptiste Kempf) Date: Fri, 25 Jun 2010 23:44:18 +0200 Subject: [vlc-devel] [PATCH] Disable faad, lower priority of decoder below avcodec In-Reply-To: References: <1277493903-6356-1-git-send-email-rafael.carre@gmail.com> <636e0e5461096dd70ad1d9db536934ab@chewa.net> <20100625213623.6e35c345@kru> <0dd286596472b6ba9a1fc9bd67810cbe@chewa.net> Message-ID: <20100625214418.GA15805@videolan.org> On Fri, Jun 25, 2010 at 10:37:24PM +0100, M?ns Rullg?rd wrote : > R?mi Denis-Courmont writes: > > > On Fri, 25 Jun 2010 21:36:23 +0200, Rafa?l Carr? > > wrote: > >> About libmpeg2 iirc fenrir said our decoder had features that ffmpeg > >> decoder hasn't. > > > > It does. > > What features? Crashing randomly on not-perfect streams. Although, I have to say that the libmpeg2 decoding feels a bit sharper. And a few other people noticed it too. Still crashing way too much. There is a good reason that lavc has now the priority. -- Jean-Baptiste Kempf http://www.jbkempf.com/ From alex.converse at gmail.com Fri Jun 25 23:50:30 2010 From: alex.converse at gmail.com (Alex Converse) Date: Fri, 25 Jun 2010 17:50:30 -0400 Subject: [vlc-devel] [PATCH] Disable faad, lower priority of decoder below avcodec In-Reply-To: <20100625214418.GA15805@videolan.org> References: <1277493903-6356-1-git-send-email-rafael.carre@gmail.com> <636e0e5461096dd70ad1d9db536934ab@chewa.net> <20100625213623.6e35c345@kru> <0dd286596472b6ba9a1fc9bd67810cbe@chewa.net> <20100625214418.GA15805@videolan.org> Message-ID: On Fri, Jun 25, 2010 at 5:44 PM, Jean-Baptiste Kempf wrote: > On Fri, Jun 25, 2010 at 10:37:24PM +0100, M?ns Rullg?rd wrote : >> R?mi Denis-Courmont writes: >> >> > On Fri, 25 Jun 2010 21:36:23 +0200, Rafa?l Carr? >> > wrote: >> >> About libmpeg2 iirc fenrir said our decoder had features that ffmpeg >> >> decoder hasn't. >> > >> > It does. >> >> What features? > > Crashing randomly on not-perfect streams. > > Although, I have to say that the libmpeg2 decoding feels a bit sharper. > And a few other people noticed it too. > Still crashing way too much. There is a good reason that lavc has now > the priority. > We know of this crasher: http://roundup.ffmpeg.org/issue1872 Samples that crash elsewhere would be appreciated, --Alex From remi at remlab.net Sat Jun 26 00:02:33 2010 From: remi at remlab.net (=?UTF-8?Q?R=C3=A9mi_Denis-Courmont?=) Date: Sat, 26 Jun 2010 00:02:33 +0200 Subject: [vlc-devel] =?utf-8?q?=5BPATCH=5D_Disable_faad=2C_lower_priority_?= =?utf-8?q?of_decoder_below_=09avcodec?= In-Reply-To: References: <1277493903-6356-1-git-send-email-rafael.carre@gmail.com> <636e0e5461096dd70ad1d9db536934ab@chewa.net> <20100625213623.6e35c345@kru> <0dd286596472b6ba9a1fc9bd67810cbe@chewa.net> <20100625214418.GA15805@videolan.org> Message-ID: <45175ef1d3d1cd4348407978afee1282@chewa.net> On Fri, 25 Jun 2010 17:50:30 -0400, Alex Converse wrote: >>> What features? >> >> Crashing randomly on not-perfect streams. >> >> Although, I have to say that the libmpeg2 decoding feels a bit sharper. >> And a few other people noticed it too. >> Still crashing way too much. There is a good reason that lavc has now >> the priority. >> > > We know of this crasher: http://roundup.ffmpeg.org/issue1872 Uh? I think JB meant that libmpeg2 crashed more than ffmpeg, not the other way around. Now this is not at all news. Meuuh claimed a long time ago that libmpeg2 did not check for overflowing motion compensation vectors, as it would slow down decoding. In my opinion, it actually makes sense to not check for overflow, *if* you run the decoder in its own isolated constrained process (with no access to file system, tracing, network...), ? la Chrome browser. Then you can leverage the CPU memory protection as your boundary checks. But VLC does not do process isolation at all, let alone constrained process isolation. -- R?mi Denis-Courmont http://www.remlab.net http://fi.linkedin.com/in/remidenis From jb at videolan.org Sat Jun 26 00:07:22 2010 From: jb at videolan.org (Jean-Baptiste Kempf) Date: Sat, 26 Jun 2010 00:07:22 +0200 Subject: [vlc-devel] [PATCH] Disable faad, lower priority of decoder below ?avcodec In-Reply-To: <45175ef1d3d1cd4348407978afee1282@chewa.net> References: <1277493903-6356-1-git-send-email-rafael.carre@gmail.com> <636e0e5461096dd70ad1d9db536934ab@chewa.net> <20100625213623.6e35c345@kru> <0dd286596472b6ba9a1fc9bd67810cbe@chewa.net> <20100625214418.GA15805@videolan.org> <45175ef1d3d1cd4348407978afee1282@chewa.net> Message-ID: <20100625220722.GA17346@videolan.org> On Sat, Jun 26, 2010 at 12:02:33AM +0200, R?mi Denis-Courmont wrote : > Uh? I think JB meant that libmpeg2 crashed more than ffmpeg, not the other > way around. Indeed. Sorry Alex, but I guess you misunderstood me. Best Regards, -- Jean-Baptiste Kempf http://www.jbkempf.com/ From alex.converse at gmail.com Sat Jun 26 00:13:04 2010 From: alex.converse at gmail.com (Alex Converse) Date: Fri, 25 Jun 2010 18:13:04 -0400 Subject: [vlc-devel] [PATCH] Disable faad, lower priority of decoder below ?avcodec In-Reply-To: <20100625220722.GA17346@videolan.org> References: <1277493903-6356-1-git-send-email-rafael.carre@gmail.com> <636e0e5461096dd70ad1d9db536934ab@chewa.net> <20100625213623.6e35c345@kru> <0dd286596472b6ba9a1fc9bd67810cbe@chewa.net> <20100625214418.GA15805@videolan.org> <45175ef1d3d1cd4348407978afee1282@chewa.net> <20100625220722.GA17346@videolan.org> Message-ID: On Fri, Jun 25, 2010 at 6:07 PM, Jean-Baptiste Kempf wrote: > On Sat, Jun 26, 2010 at 12:02:33AM +0200, R?mi Denis-Courmont wrote : >> Uh? I think JB meant that libmpeg2 crashed more than ffmpeg, not the other >> way around. > Indeed. > Sorry Alex, but I guess you misunderstood me. > You're right. After reading that again what yo meant is very clear. That's what I get for spending all day staring at aacenc dbg output :) --Alex From rem at videolan.org Sat Jun 26 04:50:56 2010 From: rem at videolan.org (=?iso-8859-15?q?R=E9mi?= Denis-Courmont) Date: Sat, 26 Jun 2010 05:50:56 +0300 Subject: [vlc-devel] [PATCH] 1-of-3: vlc-1.1.0 network poll timeout In-Reply-To: <4C22A1FC.4090401@anamica.de> References: <4C228CEE.3080607@anamica.de> <201006240307.30514.rem@videolan.org> <4C22A1FC.4090401@anamica.de> Message-ID: <201006260550.56391.rem@videolan.org> On Thursday 24 June 2010 03:08:28 Frank Enderle, you wrote: > Ok - so I guess the correct way would be to put some timeout within the > http access module or add a variant of net_Read/Write which supports a > timeout parameter on the other hand this sucks. I don't really understand what you're trying to do. Why do you need a write timeout when the TCP stack already has one? Why do you need a read timeout at all? -- R?mi Denis-Courmont From frank.enderle at anamica.de Sat Jun 26 08:58:24 2010 From: frank.enderle at anamica.de (Frank Enderle) Date: Sat, 26 Jun 2010 08:58:24 +0200 Subject: [vlc-devel] [PATCH] 1-of-3: vlc-1.1.0 network poll timeout In-Reply-To: <201006260550.56391.rem@videolan.org> References: <4C228CEE.3080607@anamica.de> <201006240307.30514.rem@videolan.org> <4C22A1FC.4090401@anamica.de> <201006260550.56391.rem@videolan.org> Message-ID: <4C25A510.2070602@anamica.de> well - maybe i'm wrong.. but if i use SO_KEEPALIVE i'd have to configure the system using procfs/sysctl for the timeout. in my case this is not really a problem, so i guess i could use the SO_KEEPALIVE feature, but as a user of libvlc i would like to be able to configure the timeout on a per application base and without root permission. there are cases where you need to know if the stream has timed out for error recovery and if the application relies on keepalive this is not deterministic from an applications point of view. it just means that it times out, but you don't know when.. but again: maybe i'm completely wrong and if that's the case we can drop the topic. btw. is there some kind of function which i can use to see if vlc is still playing audible or visible data? i mean a method to see on the api side if the data is really getting to aout/vout? Am 26.06.2010 04:50, schrieb R?mi Denis-Courmont: > On Thursday 24 June 2010 03:08:28 Frank Enderle, you wrote: >> Ok - so I guess the correct way would be to put some timeout within the >> http access module or add a variant of net_Read/Write which supports a >> timeout parameter on the other hand this sucks. > > I don't really understand what you're trying to do. Why do you need a write > timeout when the TCP stack already has one? Why do you need a read timeout at > all? > -- Dipl.-Ing. (FH) Frank Enderle anamica UG (haftungsbeschr?nkt) Beinsteinerstr. 6 71334 Waiblingen Telefon: +49 151 14981091 Telefax: +49 7151 1335770 E-Mail: frank.enderle at anamica.de Internet: www.anamica.de Handelsregister: AG Stuttgart HRB 732357 Gesch?ftsf?hrer: Yvonne Holzwarth, Frank Enderle From fenrir at elivagar.org Sat Jun 26 12:10:13 2010 From: fenrir at elivagar.org (Laurent Aimar) Date: Sat, 26 Jun 2010 12:10:13 +0200 Subject: [vlc-devel] [PATCH] Disable faad, lower priority of decoder below avcodec In-Reply-To: References: <1277493903-6356-1-git-send-email-rafael.carre@gmail.com> <636e0e5461096dd70ad1d9db536934ab@chewa.net> <20100625213623.6e35c345@kru> <0dd286596472b6ba9a1fc9bd67810cbe@chewa.net> Message-ID: <1277547013.17755.13.camel@localhost> On Fri, 2010-06-25 at 22:37 +0100, M?ns Rullg?rd wrote: > R?mi Denis-Courmont writes: > > > On Fri, 25 Jun 2010 21:36:23 +0200, Rafa?l Carr? > > wrote: > >> About libmpeg2 iirc fenrir said our decoder had features that ffmpeg > >> decoder hasn't. > > > > It does. > > What features? - There was an issue with DVD menus. It is not a bug in avcodec but avcodec outputs the first I frame with a latency of one (unless there is an EOS). It is now OK in VLC as we insert an EOS when we detect a menu. - avcodec has decoding issues with field pictures at least on some samples I have (I only recently seen this issue while adding dxva2 mpeg2). Anyway, IMHO keeping both versions of a decoder even after their priority order has changed for the first release is a good thing. It allow to easily detect regressions due to the codec change and/or to have a quick workaround. -- fenrir From fenrir at elivagar.org Sat Jun 26 12:13:22 2010 From: fenrir at elivagar.org (Laurent Aimar) Date: Sat, 26 Jun 2010 12:13:22 +0200 Subject: [vlc-devel] [PATCH] Disable faad, lower priority of decoder below avcodec In-Reply-To: <1277547013.17755.13.camel@localhost> References: <1277493903-6356-1-git-send-email-rafael.carre@gmail.com> <636e0e5461096dd70ad1d9db536934ab@chewa.net> <20100625213623.6e35c345@kru> <0dd286596472b6ba9a1fc9bd67810cbe@chewa.net> <1277547013.17755.13.camel@localhost> Message-ID: <1277547202.17755.16.camel@localhost> On Sat, 2010-06-26 at 12:10 +0200, Laurent Aimar wrote: > - There was an issue with DVD menus. It is not a bug in avcodec but > avcodec outputs the first I frame with a latency of one (unless there is > an EOS). In fact, I am not even sure that avcodec cares about EOS. In vlc avcodec wrapper, I force a flush on EOS. -- fenrir From fenrir at elivagar.org Sat Jun 26 12:25:34 2010 From: fenrir at elivagar.org (Laurent Aimar) Date: Sat, 26 Jun 2010 12:25:34 +0200 Subject: [vlc-devel] [PATCH] Disable faad, lower priority of decoder below avcodec In-Reply-To: <1277493903-6356-1-git-send-email-rafael.carre@gmail.com> References: <1277493903-6356-1-git-send-email-rafael.carre@gmail.com> Message-ID: <1277547934.17755.26.camel@localhost> Hi, On Fri, 2010-06-25 at 21:25 +0200, Rafa?l Carr? wrote: > vlc_module_begin () > set_description( N_("AAC audio decoder (using libfaad2)") ) > - set_capability( "decoder", 100 ) > + set_capability( "decoder", 50 ) > set_category( CAT_INPUT ) > set_subcategory( SUBCAT_INPUT_ACODEC ) > set_callbacks( Open, Close ) Are you sure avcodec supports every 'common' tools actually used by AAC ? And if no, are some of them widely used ? Have you tested that vlc and avcodec AAC decoder do actually like each other on a large set of files ? Have you tested faad vs avcodec stability against broken/corrupted streams ? I am not against the change and I would prefer to have only avcodec, but I don't want to have unneeded bug reports. Regards, -- fenrir From logiconcepts819 at gmail.com Fri Jun 25 22:39:30 2010 From: logiconcepts819 at gmail.com (Ron Wright) Date: Fri, 25 Jun 2010 15:39:30 -0500 Subject: [vlc-devel] Dynamic range compressor patch In-Reply-To: References: <201006220353.57723.rem@videolan.org> <20100624190542.GA21497@elivagar.org> Message-ID: Hello, I have made many drastic changes in the compressor.c file and some minor changes in the UI code. Here are some of the changes: 1. Added VLC copyright and $id$ tag to the banner. 2. Made the filter structure, RMS envelope structure, and attack lookup table contiguous in memory so that only one memory allocation and one memory deallocation is needed. 3. Reorganized the functions so that they don't appear out of place. 4. Removed two wasteful members (amplitude and gain reduction) from the filter structure (this is probably used to implement output meters in certain LADSPA frontends). 5. The release of the mutex lock in the DoWork function now occurs immediately after retrieving the shared values. 6. Replaced the logic in the callback functions with clipping functions. 7. Removed useless casts. 8. Changed default values. Here are some notes to take into consideration: 1. The f_max and f_clamp functions work as expected. Proof: f_max (with arguments x and a): If x < a, then 0.5 * ((x - a) + fabs(x - a)) + a = 0.5 * ((x - a) - (x - a)) + a = a If x >= a, then 0.5 * ((x - a) + fabs(x - a)) + a = 0.5 * ((x - a) + (x - a)) + a = 0.5*2*(x - a) + a = x f_clamp (with arguments x, a, and b): If x < a, then 0.5 * (fabs(x - a) + a + b - fabs(x - b)) = 0.5 * (-(x - a) + a + b + (x - b)) = 0.5 * (2*a - x + b + x - b) = a If a <= x < b, then 0.5 * (fabs(x - a) + a + b - fabs(x - b)) = 0.5 * ((x - a) + a + b + (x - b)) = 0.5 * (x + b + x - b) = x If x >= b, then 0.5 * (fabs(x - a) + a + b - fabs(x - b)) = 0.5 * ((x - a) + a + b - (x - b)) = 0.5 * (x + b - x + b) = b These are branchless clipping functions from Laurent de Soras. 2. A buffer overflow will not occur when either attack or release converted to seconds is multiplied by (A_TBL - 1), with the resulting value used as an index to retrieve the attack (or release) value from the lookup table. The maximum of the maximum values of attack and release is 800, and A_TBL is 256, so 800 * 0.001 * 255 = 204. This means that the index will neither go beyond 255 nor even reach 255. The minimum of the minimum values of attack and release is 1.5. However, the real minimum value used in the code is 2. Nevertheless, there will also be no buffer underflow, since this value is positive. If you wish to see the original LADSPA SWH code, look here: http://github.com/swh/ladspa. The compressor is based on code in sc4_1882.xml along with the necessary helper functions in other files. Attached are the updated compressor core and UI patches. Regards, Ronald Wright On Thu, Jun 24, 2010 at 2:05 PM, Laurent Aimar wrote: > On Mon, Jun 21, 2010 at 11:28:55PM -0500, Ron Wright wrote: > > > +/***************************************************************************** > > + * Open: initialize interface > > + > *****************************************************************************/ > > + > > +static int Open( vlc_object_t *p_this ) > > +{ > > + filter_t *p_filter = (filter_t*)p_this; > > + vlc_object_t *p_aout = p_filter->p_parent; > I see what you need it but I find it really really ugly. Dunno how to > avoid that. Anyone with an idea ? > > > + struct filter_sys_t *p_sys; > > + float amp; > > + float *as = NULL; > Useless init. > > + unsigned int count; > > + float env; > > + float env_peak; > > + float env_rms; > > + float gain; > > + float gain_t; > > + rms_env *rms = NULL; > Useless init. > > + float sum; > > + > > + sample_rate = (float)p_filter->fmt_in.audio.i_rate; > Useless cast. > > > + rms = rms_env_new(); > > + if ( !rms ) > > + { > > + free( p_sys ); > > + return VLC_ENOMEM; > > + } > > + > > + sum = 0.0f; > > + amp = 0.0f; > > + gain = 0.0f; > > + gain_t = 0.0f; > > + env = 0.0f; > > + env_rms = 0.0f; > > + env_peak = 0.0f; > > + count = 0; > > + > > + as = malloc( A_TBL * sizeof(float) ); > calloc( A_TBL, sizeof(*as) ) > > > + if ( !as ) > > + { > > + rms_env_free( rms ); > > + free( p_sys ); > > + return VLC_ENOMEM; > > + } > But moving as and rms into the context (instead of allocating them > independantly) would avoid thoses 2 mallocs and so simplify the code > (only one error path). > > > + as[0] = 1.0f; > > + for ( i = 1; i < A_TBL; i++ ) { > > + as[i] = expf( -1.0f / ( sample_rate * (float)i / (float)A_TBL ) > ); > Useless float casts. > > > + p_sys->amp = amp; > > + p_sys->as = as; > > + p_sys->count = count; > > + p_sys->env = env; > > + p_sys->env_peak = env_peak; > > + p_sys->env_rms = env_rms; > > + p_sys->gain = gain; > > + p_sys->gain_t = gain_t; > > + p_sys->rms = rms; > > + p_sys->sum = sum; > I think you call remove most of the local variables and directly init > p_sys. > > > + vlc_mutex_init( &p_sys->lock ); > > + > > + p_sys->rms_peak = var_CreateGetFloat( p_aout, > "compressor-rms-peak" ); > > + p_sys->attack = var_CreateGetFloat( p_aout, "compressor-attack" > ); > > + p_sys->release = var_CreateGetFloat( p_aout, > "compressor-release" ); > > + p_sys->threshold = var_CreateGetFloat( p_aout, > "compressor-threshold" ); > > + p_sys->ratio = var_CreateGetFloat( p_aout, "compressor-ratio" > ); > > + p_sys->knee = var_CreateGetFloat( p_aout, "compressor-knee" > ); > > + p_sys->makeup_gain = var_CreateGetFloat( p_aout, > "compressor-makeup-gain" ); > > + p_sys->amplitude = 0; > > + p_sys->gain_red = 0; > > + > > + /* Add our own callbacks */ > > + var_AddCallback( p_aout, "compressor-rms-peak", RMSPeakCallback, > p_sys ); > > + var_AddCallback( p_aout, "compressor-attack", AttackCallback, p_sys > ); > > + var_AddCallback( p_aout, "compressor-release", ReleaseCallback, > p_sys ); > > + var_AddCallback( p_aout, "compressor-threshold", ThresholdCallback, > p_sys ); > > + var_AddCallback( p_aout, "compressor-ratio", RatioCallback, p_sys ); > > + var_AddCallback( p_aout, "compressor-knee", KneeCallback, p_sys ); > > + var_AddCallback( p_aout, "compressor-makeup-gain", > MakeupGainCallback, > > + p_sys ); > > + > > + msg_Dbg( p_filter, "compressor successfully initialized" ); > > + return VLC_SUCCESS; > > +} > > + > > +static float f_db2lin_cube( float db, filter_sys_t * p_sys ) > > +{ > > + float scale = ( db - DB_MIN ) * (float)LIN_TABLE_SIZE / ( DB_MAX - > DB_MIN ); > > + int base = f_round( scale - 0.5f ); > > + float ofs = scale - base; > > + float *lin_data = p_sys->lin_data; > > + > > + if ( base < 1 ) > > + { > > + return 0.0f; > > + } > > + else if ( base > LIN_TABLE_SIZE - 3 ) > > + { > > + return lin_data[LIN_TABLE_SIZE - 2]; > > + } > > + > > + return cube_interp( ofs, lin_data[base - 1], > > + lin_data[base], > > + lin_data[base + 1], > > + lin_data[base + 2] ); > > +} > > + > > +static float f_db2lin_lerp( float db, filter_sys_t * p_sys ) > > +{ > > + float scale = ( db - DB_MIN ) * (float)LIN_TABLE_SIZE / ( DB_MAX - > DB_MIN ); > > + int base = f_round( scale - 0.5f ); > > + float ofs = scale - base; > > + float *lin_data = p_sys->lin_data; > > + > > + if ( base < 1 ) > > + { > > + return 0.0f; > > + } > > + else if ( base > LIN_TABLE_SIZE - 3 ) > > + { > > + return lin_data[LIN_TABLE_SIZE - 2]; > > + } > > + > > + return ( 1.0f - ofs ) * lin_data[base] + ofs * lin_data[base + 1]; > > +} > f_db2lin_cube and f_db2lin_lerp could be merged and simply use the define > for > the only specific line. > > > +static float f_lin2db_cube( float lin, filter_sys_t * p_sys ) > > +{ > > + float scale = ( lin - LIN_MIN ) * (float)DB_TABLE_SIZE / > > + ( LIN_MAX - LIN_MIN ); > > + int base = f_round( scale - 0.5f ); > > + float ofs = scale - base; > > + float *db_data = p_sys->db_data; > > + > > + if ( base < 2 ) > > + { > > + return db_data[2] * scale * 0.5f - 23.0f * ( 2.0f - scale ); > > + } > > + else if ( base > DB_TABLE_SIZE - 3 ) > > + { > > + return db_data[DB_TABLE_SIZE - 2]; > > + } > > + > > + return cube_interp( ofs, db_data[base - 1], > > + db_data[base], > > + db_data[base + 1], > > + db_data[base + 2] ); > > +} > > + > > +static float f_lin2db_lerp( float lin, filter_sys_t * p_sys ) > > +{ > > + float scale = ( lin - LIN_MIN ) * (float)DB_TABLE_SIZE / > > + ( LIN_MAX - LIN_MIN ); > > + int base = f_round( scale - 0.5f ); > > + float ofs = scale - base; > > + float *db_data = p_sys->db_data; > > + > > + if ( base < 2 ) > > + { > > + return db_data[2] * scale * 0.5f - 23.0f * ( 2.0f - scale ); > > + } > > + else if ( base > DB_TABLE_SIZE - 2 ) > > + { > > + return db_data[DB_TABLE_SIZE - 1]; > > + } > > + > > + return ( 1.0f - ofs ) * db_data[base] + ofs * db_data[base + 1]; > > +} > Same here (dunno if the -2 vs -3 is a bug or not, it doesn't match > f_db2lin_cube vs f_db2lin_lerp). > > > +static void round_to_zero( volatile float *f ) > > +{ > > + *f += 1e-18; > > + *f -= 1e-18; > > +} > I don't think volatile is needed here. > Btw, what do you want to do with it ? Is it to remove not normalized > number ? > > > +static float f_max( float x, float a ) > > +{ > > + x -= a; > > + x += fabs( x ); > > + x *= 0.5; > > + x += a; > > + > > + return x; > > +} > Is it really a max like function ? > > > +static block_t * DoWork( filter_t * p_filter, block_t * p_in_buf ) > > +{ > > + int i_samples = p_in_buf->i_nb_samples; > > + int i_channels = aout_FormatNbChannels( &p_filter->fmt_in.audio ); > > + float *p_out = (float*)p_in_buf->p_buffer; > > + float *p_in = (float*)p_in_buf->p_buffer; > > + > > + float rms_peak, attack, release, threshold, ratio, knee, > makeup_gain; > > + float amp, *as, env, env_peak, env_rms, gain, gain_t, sum; > > + unsigned int count; > > + rms_env *rms; > > + > > + float ga, gr, rs, mug, knee_min, knee_max, ef_a, ef_ai; > > + > > + int pos, pos_chan; > > + > > + /* Current configuration */ > > + struct filter_sys_t *p_sys = p_filter->p_sys; > > + > > + vlc_mutex_lock( &p_sys->lock ); > > + > > + /* RMS/peak (float value) */ > > + rms_peak = p_sys->rms_peak; > > + > > + /* Attack time (ms) (float value) */ > > + attack = p_sys->attack; > > + > > + /* Release time (ms) (float value) */ > > + release = p_sys->release; > > + > > + /* Threshold level (dB) (float value) */ > > + threshold = p_sys->threshold; > > + > > + /* Ratio (n:1) (float value) */ > > + ratio = p_sys->ratio; > > + > > + /* Knee radius (dB) (float value) */ > > + knee = p_sys->knee; > > + > > + /* Makeup gain (dB) (float value) */ > > + makeup_gain = p_sys->makeup_gain; > > As you made a copy of all the variable protected by the lock, you could > release it here (instead of later). It is always good to minimized the time > you hold a lock when possible. > > > + > > + amp = p_sys->amp; > > + as = p_sys->as; > > + count = p_sys->count; > > + env = p_sys->env; > > + env_peak = p_sys->env_peak; > > + env_rms = p_sys->env_rms; > > + gain = p_sys->gain; > > + gain_t = p_sys->gain_t; > I would prefer if you don't use _t for a variable. > > > + rms = p_sys->rms; > > + sum = p_sys->sum; > > + > > + ga = attack < 2.0f ? 0.0f > > + : as[f_round( attack * 0.001f * (float)( A_TBL - > 1 ) )]; > > + gr = as[f_round( release * 0.001f * (float)( A_TBL - 1 ) )]; > Are thoses as[] accesses guaranted to be insided bound ? (besides, with > float > I am a bit paranoiac). > > > + rs = ( ratio - 1.0f ) / ratio; > > + mug = db2lin( makeup_gain, p_sys ); > > + knee_min = db2lin( threshold - knee, p_sys ); > > + knee_max = db2lin( threshold + knee, p_sys ); > > + ef_a = ga * 0.25f; > > + ef_ai = 1.0f - ef_a; > > + > > + for ( pos = 0; pos < i_samples; pos++ ) > > + { > > + float lev_in = fabs( p_in[0] ); > > + for( pos_chan = 1; pos_chan < i_channels; pos_chan++ ) > > + { > > + lev_in = f_max( lev_in, fabs( p_in[pos_chan] ) ); > > + } > > + sum += lev_in * lev_in; > > + > > + if ( amp > env_rms ) > > + { > > + env_rms = env_rms * ga + amp * ( 1.0f - ga ); > > + } > > + else > > + { > > + env_rms = env_rms * gr + amp * ( 1.0f - gr ); > > + } > > + round_to_zero( &env_rms ); > > + if ( lev_in > env_peak ) > > + { > > + env_peak = env_peak * ga + lev_in * ( 1.0f - ga ); > > + } > > + else > > + { > > + env_peak = env_peak * gr + lev_in * ( 1.0f - gr ); > > + } > > + round_to_zero( &env_peak ); > > + if ( ( count++ & 3 ) == 3 ) > > + { > > + amp = rms_env_process( rms, sum * 0.25f ); > > + sum = 0.0f; > > + if ( isnan( env_rms ) ) > > + { > > + /* This can happen sometimes, but I don't know why */ > > + env_rms = 0.0f; > Maybe because your env_rms equation diverges (easy with float) or one > of the other numbers used is a NaN. > > + } > > + > > + env = LIN_INTERP( rms_peak, env_rms, env_peak ); > > + > > + if ( env <= knee_min ) > > + { > > + gain_t = 1.0f; > > + } > > + else if ( env < knee_max ) > > + { > > + const float x = -( threshold - knee > > + - lin2db( env, p_sys ) ) / > knee; > > + gain_t = db2lin( -knee * rs * x * x * 0.25f, p_sys ); > > + } > > + else > > + { > > + gain_t = db2lin( ( threshold - lin2db( env, p_sys ) ) * > rs, > > + p_sys ); > > + } > > + } > > + > > + gain = gain * ef_a + gain_t * ef_ai; > > + > > + for ( pos_chan = 0; pos_chan < i_channels; pos_chan++ ) > > + { > > + p_out[pos_chan] = p_in[pos_chan] * gain * mug; > > + } > > + > > + p_in += i_channels; > > + p_out += i_channels; > You may also one only one pointer (but not needed). > > > + } > > + > > + p_sys->sum = sum; > > + p_sys->amp = amp; > > + p_sys->gain = gain; > > + p_sys->gain_t = gain_t; > > + p_sys->env = env; > > + p_sys->env_rms = env_rms; > > + p_sys->env_peak = env_peak; > > + p_sys->count = count; > > + > > + p_sys->amplitude = lin2db( env, p_sys ); > > + p_sys->gain_red = lin2db( gain, p_sys ); > > + > > + vlc_mutex_unlock( &p_sys->lock ); > > + > > + return p_in_buf; > > +} > > + > > > +/***************************************************************************** > > + * Callback functions > > + > *****************************************************************************/ > > + > > +static int RMSPeakCallback( vlc_object_t *p_this, char const *psz_cmd, > > + vlc_value_t oldval, vlc_value_t newval, > > + void * p_data ) > > +{ > > + VLC_UNUSED(p_this); VLC_UNUSED(psz_cmd); VLC_UNUSED(oldval); > > + filter_sys_t *p_sys = p_data; > > + > > + if ( newval.f_float < 0.0 ) > > + { > > + newval.f_float = 0.0; > > + } > > + else if ( newval.f_float > 1.0 ) > > + { > > + newval.f_float = 1.0; > > + } > > + > > + vlc_mutex_lock( &p_sys->lock ); > > + p_sys->rms_peak = newval.f_float; > > + vlc_mutex_unlock( &p_sys->lock ); > > + > > + return VLC_SUCCESS; > > +} > > + > > +static int AttackCallback( vlc_object_t *p_this, char const *psz_cmd, > > + vlc_value_t oldval, vlc_value_t newval, > > + void * p_data ) > > +{ > > + VLC_UNUSED(p_this); VLC_UNUSED(psz_cmd); VLC_UNUSED(oldval); > > + filter_sys_t *p_sys = p_data; > > + > > + if ( newval.f_float < 1.5 ) > > + { > > + newval.f_float = 1.5; > > + } > > + else if ( newval.f_float > 400.0 ) > > + { > > + newval.f_float = 400.0; > > + } > > + > > + vlc_mutex_lock( &p_sys->lock ); > > + p_sys->attack = newval.f_float; > > + vlc_mutex_unlock( &p_sys->lock ); > > + > > + return VLC_SUCCESS; > > +} > > + > > +static int ReleaseCallback( vlc_object_t *p_this, char const *psz_cmd, > > + vlc_value_t oldval, vlc_value_t newval, > > + void * p_data ) > > +{ > > + VLC_UNUSED(p_this); VLC_UNUSED(psz_cmd); VLC_UNUSED(oldval); > > + filter_sys_t *p_sys = p_data; > > + > > + if ( newval.f_float < 2.0 ) > > + { > > + newval.f_float = 2.0; > > + } > > + else if ( newval.f_float > 800.0 ) > > + { > > + newval.f_float = 800.0; > > + } > > + > > + vlc_mutex_lock( &p_sys->lock ); > > + p_sys->release = newval.f_float; > > + vlc_mutex_unlock( &p_sys->lock ); > > + > > + return VLC_SUCCESS; > > +} > > + > > +static int ThresholdCallback( vlc_object_t *p_this, char const *psz_cmd, > > + vlc_value_t oldval, vlc_value_t newval, > > + void * p_data ) > > +{ > > + VLC_UNUSED(p_this); VLC_UNUSED(psz_cmd); VLC_UNUSED(oldval); > > + filter_sys_t *p_sys = p_data; > > + > > + if ( newval.f_float < -30.0 ) > > + { > > + newval.f_float = -30.0; > > + } > > + else if ( newval.f_float > 0.0 ) > > + { > > + newval.f_float = 0.0; > > + } > > + > > + vlc_mutex_lock( &p_sys->lock ); > > + p_sys->threshold = newval.f_float; > > + vlc_mutex_unlock( &p_sys->lock ); > > + > > + return VLC_SUCCESS; > > +} > > + > > +static int RatioCallback( vlc_object_t *p_this, char const *psz_cmd, > > + vlc_value_t oldval, vlc_value_t newval, > > + void * p_data ) > > +{ > > + VLC_UNUSED(p_this); VLC_UNUSED(psz_cmd); VLC_UNUSED(oldval); > > + filter_sys_t *p_sys = p_data; > > + > > + if ( newval.f_float < 1.0 ) > > + { > > + newval.f_float = 1.0; > > + } > > + else if ( newval.f_float > 20.0 ) > > + { > > + newval.f_float = 20.0; > > + } > > + > > + vlc_mutex_lock( &p_sys->lock ); > > + p_sys->ratio = newval.f_float; > > + vlc_mutex_unlock( &p_sys->lock ); > > + > > + return VLC_SUCCESS; > > +} > > + > > +static int KneeCallback( vlc_object_t *p_this, char const *psz_cmd, > > + vlc_value_t oldval, vlc_value_t newval, > > + void * p_data ) > > +{ > > + VLC_UNUSED(p_this); VLC_UNUSED(psz_cmd); VLC_UNUSED(oldval); > > + filter_sys_t *p_sys = p_data; > > + > > + if ( newval.f_float < 1.0 ) > > + { > > + newval.f_float = 1.0; > > + } > > + else if ( newval.f_float > 10.0 ) > > + { > > + newval.f_float = 10.0; > > + } > > + > > + vlc_mutex_lock( &p_sys->lock ); > > + p_sys->knee = newval.f_float; > > + vlc_mutex_unlock( &p_sys->lock ); > > + > > + return VLC_SUCCESS; > > +} > > + > > +static int MakeupGainCallback( vlc_object_t *p_this, char const > *psz_cmd, > > + vlc_value_t oldval, vlc_value_t newval, > > + void * p_data ) > > +{ > > + VLC_UNUSED(p_this); VLC_UNUSED(psz_cmd); VLC_UNUSED(oldval); > > + filter_sys_t *p_sys = p_data; > > + > > + if ( newval.f_float < 0.0 ) > > + { > > + newval.f_float = 0.0; > > + } > > + else if ( newval.f_float > 24.0 ) > > + { > > + newval.f_float = 24.0; > > + } > > + > > + vlc_mutex_lock( &p_sys->lock ); > > + p_sys->makeup_gain = newval.f_float; > > + vlc_mutex_unlock( &p_sys->lock ); > > + > > + return VLC_SUCCESS; > > +} > Doing a small float cliping function would reduce the code (and so improve > readability) IMHO. > You may also create only one callback and check the value of psz_cmd > inside > but that depends on one preferences. > > > Regards, > > -- > fenrir > > _______________________________________________ > vlc-devel mailing list > To unsubscribe or modify your subscription options: > http://mailman.videolan.org/listinfo/vlc-devel > -------------- next part -------------- An HTML attachment was scrubbed... URL: -------------- next part -------------- A non-text attachment was scrubbed... Name: vlc-compressor-core.patch Type: application/octet-stream Size: 23624 bytes Desc: not available URL: -------------- next part -------------- A non-text attachment was scrubbed... Name: vlc-compressor-ui.patch Type: application/octet-stream Size: 7903 bytes Desc: not available URL: From mans at mansr.com Sat Jun 26 16:26:48 2010 From: mans at mansr.com (=?iso-8859-1?Q?M=E5ns_Rullg=E5rd?=) Date: Sat, 26 Jun 2010 15:26:48 +0100 Subject: [vlc-devel] [PATCH] Disable faad, lower priority of decoder below avcodec References: <1277493903-6356-1-git-send-email-rafael.carre@gmail.com> <636e0e5461096dd70ad1d9db536934ab@chewa.net> <20100625213623.6e35c345@kru> <0dd286596472b6ba9a1fc9bd67810cbe@chewa.net> <1277547013.17755.13.camel@localhost> Message-ID: Laurent Aimar writes: > On Fri, 2010-06-25 at 22:37 +0100, M?ns Rullg?rd wrote: >> R?mi Denis-Courmont writes: >> >> > On Fri, 25 Jun 2010 21:36:23 +0200, Rafa?l Carr? >> > wrote: >> >> About libmpeg2 iirc fenrir said our decoder had features that ffmpeg >> >> decoder hasn't. >> > >> > It does. >> >> What features? > - There was an issue with DVD menus. It is not a bug in avcodec but > avcodec outputs the first I frame with a latency of one (unless there is > an EOS). It is now OK in VLC as we insert an EOS when we detect a menu. > - avcodec has decoding issues with field pictures at least on some > samples I have (I only recently seen this issue while adding dxva2 > mpeg2). Have you reported these problems? > Anyway, IMHO keeping both versions of a decoder even after their > priority order has changed for the first release is a good thing. It > allow to easily detect regressions due to the codec change and/or to > have a quick workaround. I'm not disagreeing with that. -- M?ns Rullg?rd mans at mansr.com From mans at mansr.com Sat Jun 26 16:32:37 2010 From: mans at mansr.com (=?iso-8859-1?Q?M=E5ns_Rullg=E5rd?=) Date: Sat, 26 Jun 2010 15:32:37 +0100 Subject: [vlc-devel] [PATCH] Disable faad, lower priority of decoder below avcodec References: <1277493903-6356-1-git-send-email-rafael.carre@gmail.com> <1277547934.17755.26.camel@localhost> Message-ID: Laurent Aimar writes: > Hi, > > On Fri, 2010-06-25 at 21:25 +0200, Rafa?l Carr? wrote: >> vlc_module_begin () >> set_description( N_("AAC audio decoder (using libfaad2)") ) >> - set_capability( "decoder", 100 ) >> + set_capability( "decoder", 50 ) >> set_category( CAT_INPUT ) >> set_subcategory( SUBCAT_INPUT_ACODEC ) >> set_callbacks( Open, Close ) > Are you sure avcodec supports every 'common' tools actually used by > AAC ? And if no, are some of them widely used ? We believe so, which is why we dropped the faad wrapper. > Have you tested that vlc and avcodec AAC decoder do actually like each > other on a large set of files ? I'd suggest paying extra attention to channel order on multi-channel files. There might be differences there. > Have you tested faad vs avcodec stability against broken/corrupted > streams ? We believe the avcodec aac decoder to be resilient, but more testing is always welcome. -- M?ns Rullg?rd mans at mansr.com From logiconcepts819 at gmail.com Sat Jun 26 16:57:13 2010 From: logiconcepts819 at gmail.com (Ron Wright) Date: Sat, 26 Jun 2010 09:57:13 -0500 Subject: [vlc-devel] Dynamic range compressor patch In-Reply-To: References: <201006220353.57723.rem@videolan.org> <20100624190542.GA21497@elivagar.org> Message-ID: I apologize for the multiple posts. I have had issues posting my message to the mailing list, and I kept posting variations of the message until it appeared in the mailing list archive, because I assumed that every message showed up immediately. I thought all of my original messages were being blocked for some strange reason, but I was mistaken. Instead, they were undergoing a delay before appearing in the archive. For instance, a message that appeared in the archive a few moments ago from this time was one of the original messages I had sent 17 hours before that. Again, my apologies. (By the way, I am rather new to posting to mailing lists.) Kind regards, Ronald Wright On Fri, Jun 25, 2010 at 3:55 PM, Ron Wright wrote: > Hello, > > I have made many drastic changes in the compressor.c file and some minor > changes in the UI code. Here are some of the changes: > > 1. Made the filter structure, RMS envelope structure, and attack lookup > table contiguous in memory so that only one memory allocation and one memory > deallocation is needed. > 2. Reorganized the functions so that they don't appear out of place. > 3. Removed two wasteful members (amplitude and gain reduction) from the > filter structure (this is probably used to implement output meters in > certain LADSPA frontends). > 4. The release of the mutex lock in the DoWork function now occurs > immediately after retrieving the shared values. > 5. Replaced the logic in the callback functions with clipping functions. > 6. Removed useless casts. > 7. Changed default values. > > > Attached are the updated compressor core and UI patches. > > Regards, > > Ronald Wright > > -------------- next part -------------- An HTML attachment was scrubbed... URL: From rem at videolan.org Sat Jun 26 16:58:43 2010 From: rem at videolan.org (=?iso-8859-15?q?R=E9mi?= Denis-Courmont) Date: Sat, 26 Jun 2010 17:58:43 +0300 Subject: [vlc-devel] [PATCH] 1-of-3: vlc-1.1.0 network poll timeout In-Reply-To: <4C25A510.2070602@anamica.de> References: <4C228CEE.3080607@anamica.de> <201006260550.56391.rem@videolan.org> <4C25A510.2070602@anamica.de> Message-ID: <201006261758.43637.rem@videolan.org> On Saturday 26 June 2010 09:58:24 Frank Enderle, you wrote: > well - maybe i'm wrong.. but if i use SO_KEEPALIVE i'd have to configure > the system using procfs/sysctl for the timeout. in my case this is not > really a problem, so i guess i could use the SO_KEEPALIVE feature, but > as a user of libvlc i would like to be able to configure the timeout on > a per application base and without root permission. It smells like you have a solution looking for a problem rather than a problem looking for a solution. TCP keep-alives do a completely different thing than receive timers. -- R?mi Denis-Courmont From rem at videolan.org Sat Jun 26 17:47:02 2010 From: rem at videolan.org (=?iso-8859-1?q?R=E9mi?= Denis-Courmont) Date: Sat, 26 Jun 2010 18:47:02 +0300 Subject: [vlc-devel] [vlc-commits] commit: ML: Media Library Core (Srikanth Raju ) In-Reply-To: <20100626131900.AE1B0FB062@albiero.videolan.org> References: <20100626131900.AE1B0FB062@albiero.videolan.org> Message-ID: <201006261847.02473.rem@videolan.org> On Saturday 26 June 2010 16:19:00 git at videolan.org, you wrote: > vlc | branch: master | Srikanth Raju | Mon Jun 21 > 22:44:52 2010 +0530| [6bff1cc92a66ab1a73ba1fbf22523671bf5c8ce3] | > committer: Srikanth Raju > > ML: Media Library Core > > Core functions and singleton media library object This commit breaks the build at vlc-cache-gen stage on all native platforms. Please fix urgently. And please test your large commits while you're at that. -- R?mi Denis-Courmont From dilaroga at gmail.com Sat Jun 26 17:59:53 2010 From: dilaroga at gmail.com (Sebastien Zwickert) Date: Sat, 26 Jun 2010 17:59:53 +0200 Subject: [vlc-devel] [PATCH 1/2] gui/macosx: fixes #3772 (disabling macosx-eq-keep causes crash). Message-ID: <5D64C735-3ADF-4060-94A6-76BB8E12AEED@gmail.com> Hi, In attachment a patch that avoids freeing a non-allocated pointer and it fixes #3772. -- Sebastien zwickert. -------------- next part -------------- A non-text attachment was scrubbed... Name: 0001-gui-macosx-fixes-3772-disabling-macosx-eq-keep-ca.patch Type: application/octet-stream Size: 930 bytes Desc: not available URL: From jb at videolan.org Sat Jun 26 18:12:14 2010 From: jb at videolan.org (Jean-Baptiste Kempf) Date: Sat, 26 Jun 2010 18:12:14 +0200 Subject: [vlc-devel] [PATCH 1/2] gui/macosx: fixes #3772 (disabling macosx-eq-keep causes crash). In-Reply-To: <5D64C735-3ADF-4060-94A6-76BB8E12AEED@gmail.com> References: <5D64C735-3ADF-4060-94A6-76BB8E12AEED@gmail.com> Message-ID: <20100626161214.GA29448@videolan.org> On Sat, Jun 26, 2010 at 05:59:53PM +0200, Sebastien Zwickert wrote : > In attachment a patch that avoids freeing a non-allocated pointer and it fixes #3772. Applied. Best Regards, -- Jean-Baptiste Kempf http://www.jbkempf.com/ From rafael.carre at gmail.com Sat Jun 26 18:13:02 2010 From: rafael.carre at gmail.com (=?UTF-8?B?UmFmYcOrbCBDYXJyw6k=?=) Date: Sat, 26 Jun 2010 18:13:02 +0200 Subject: [vlc-devel] [PATCH] Disable faad, lower priority of decoder below avcodec In-Reply-To: <1277547934.17755.26.camel@localhost> References: <1277493903-6356-1-git-send-email-rafael.carre@gmail.com> <1277547934.17755.26.camel@localhost> Message-ID: <20100626181302.11e9c2c8@kru> On Sat, 26 Jun 2010 12:25:34 +0200 Laurent Aimar wrote: > Hi, Hello, > On Fri, 2010-06-25 at 21:25 +0200, Rafa?l Carr? wrote: > > vlc_module_begin () > > set_description( N_("AAC audio decoder (using libfaad2)") ) > > - set_capability( "decoder", 100 ) > > + set_capability( "decoder", 50 ) > > set_category( CAT_INPUT ) > > set_subcategory( SUBCAT_INPUT_ACODEC ) > > set_callbacks( Open, Close ) > Are you sure avcodec supports every 'common' tools actually used by > AAC ? And if no, are some of them widely used ? Like M?ns said the avcodec decoder should be complete > Have you tested that vlc and avcodec AAC decoder do actually like > each other on a large set of files ? No but if you have a collection of samples somewhere i can do that and compare output > Have you tested faad vs avcodec stability against broken/corrupted > streams ? Running zzuf against an aac-lc produced by faac looks fine > I am not against the change and I would prefer to have only avcodec, > but I don't want to have unneeded bug reports. If there are problems we can forward bug reports to ffmpeg ;) IMO if we lower faad priority now that 1.1 was just released that will give us more time to see if there are regressions. -- ? Rafa?l Carr? ? -------------- next part -------------- A non-text attachment was scrubbed... Name: signature.asc Type: application/pgp-signature Size: 198 bytes Desc: not available URL: From srikiraju at gmail.com Sat Jun 26 18:25:20 2010 From: srikiraju at gmail.com (Srikanth Raju) Date: Sat, 26 Jun 2010 21:55:20 +0530 Subject: [vlc-devel] [vlc-commits] commit: ML: Media Library Core (Srikanth Raju ) In-Reply-To: <201006261847.02473.rem@videolan.org> References: <20100626131900.AE1B0FB062@albiero.videolan.org> <201006261847.02473.rem@videolan.org> Message-ID: 2010/6/26 R?mi Denis-Courmont > On Saturday 26 June 2010 16:19:00 git at videolan.org, you wrote: > > vlc | branch: master | Srikanth Raju | Mon Jun 21 > > 22:44:52 2010 +0530| [6bff1cc92a66ab1a73ba1fbf22523671bf5c8ce3] | > > committer: Srikanth Raju > > > > ML: Media Library Core > > > > Core functions and singleton media library object > > This commit breaks the build at vlc-cache-gen stage on all native > platforms. > Please fix urgently. > > Fixed. > And please test your large commits while you're at that. > > What do I do about the asserts in ml_gc_incref and ml_gc_decref in vlc_media_library.h? Not using asserts in headers will force me to remove them completely. > -- > R?mi Denis-Courmont > _______________________________________________ > vlc-devel mailing list > To unsubscribe or modify your subscription options: > http://mailman.videolan.org/listinfo/vlc-devel > -- Regards, Srikanth Raju -------------- next part -------------- An HTML attachment was scrubbed... URL: From rem at videolan.org Sat Jun 26 19:15:20 2010 From: rem at videolan.org (=?iso-8859-15?q?R=E9mi?= Denis-Courmont) Date: Sat, 26 Jun 2010 20:15:20 +0300 Subject: [vlc-devel] [vlc-commits] commit: ML: Media Library Core (Srikanth Raju ) In-Reply-To: References: <20100626131900.AE1B0FB062@albiero.videolan.org> <201006261847.02473.rem@videolan.org> Message-ID: <201006262015.21537.rem@videolan.org> On Saturday 26 June 2010 19:25:20 Srikanth Raju, you wrote: > What do I do about the asserts in ml_gc_incref and ml_gc_decref in > vlc_media_library.h? Not using asserts in headers will force me to remove > them completely. You remove them or you do not inline the code. -- R?mi Denis-Courmont From jmenon86 at gmail.com Sat Jun 26 19:29:37 2010 From: jmenon86 at gmail.com (Jai Menon) Date: Sat, 26 Jun 2010 22:59:37 +0530 Subject: [vlc-devel] [PATCH] WAV Mux : Extend the muxer to support non-PCM codecs. Message-ID: <1277573377-21908-1-git-send-email-jmenon86@gmail.com> The current muxer generates invalid files whenever any streams with non-PCM codecs are used as input. This is fixed by using a VLC codec ID-to-waveformat tag map. The map has been populated with some codecs to begin with and can be extended as necessary. --- modules/mux/wav.c | 29 ++++++++++++++++++++++++++--- 1 files changed, 26 insertions(+), 3 deletions(-) diff --git a/modules/mux/wav.c b/modules/mux/wav.c index f2f4091..5d74517 100644 --- a/modules/mux/wav.c +++ b/modules/mux/wav.c @@ -97,6 +97,20 @@ static const uint32_t pi_channels_out[] = WAVE_SPEAKER_BACK_CENTER, WAVE_SPEAKER_SIDE_LEFT, WAVE_SPEAKER_SIDE_RIGHT, 0 }; +static const uint32_t wformat_map[][2] = { + { VLC_CODEC_U8, WAVE_FORMAT_PCM }, + { VLC_CODEC_S16L, WAVE_FORMAT_PCM }, + { VLC_CODEC_S24L, WAVE_FORMAT_PCM }, + { VLC_CODEC_S32L, WAVE_FORMAT_PCM }, + { VLC_CODEC_A52, WAVE_FORMAT_A52 }, + { VLC_CODEC_DTS, WAVE_FORMAT_DTS }, + { VLC_CODEC_FL32, WAVE_FORMAT_IEEE_FLOAT }, + { VLC_CODEC_FL64, WAVE_FORMAT_IEEE_FLOAT }, + { VLC_CODEC_ALAW, WAVE_FORMAT_ALAW }, + { VLC_CODEC_MULAW, WAVE_FORMAT_MULAW }, + { 0, 0 } +}; + /***************************************************************************** * Open: *****************************************************************************/ @@ -164,7 +178,7 @@ static int AddStream( sout_mux_t *p_mux, sout_input_t *p_input ) GUID subformat_guid = {0, 0, 0x10,{0x80, 0, 0, 0xaa, 0, 0x38, 0x9b, 0x71}}; sout_mux_sys_t *p_sys = p_mux->p_sys; WAVEFORMATEX *p_waveformat = &p_sys->waveformat.Format; - int i_bytes_per_sample, i_format; + int i_bytes_per_sample, i_format, i; bool b_ext; if( p_input->p_fmt->i_cat != AUDIO_ES ) @@ -204,8 +218,17 @@ static int AddStream( sout_mux_t *p_mux, sout_input_t *p_input ) p_sys->i_channel_mask, (int)p_sys->b_chan_reorder ); } - i_format = p_input->p_fmt->i_codec == VLC_CODEC_FL32 ? - WAVE_FORMAT_IEEE_FLOAT : WAVE_FORMAT_PCM; + i_format = WAVE_FORMAT_UNKNOWN; + + for( i = 0; wformat_map[i][0]; i++) + { + if( wformat_map[i][0] == p_input->p_fmt->i_codec ) + { + i_format = wformat_map[i][1]; + break; + } + } + b_ext = p_sys->b_ext = p_input->p_fmt->audio.i_channels > 2; /* Build a WAV header for the output data */ -- 1.7.1 From fenrir at elivagar.org Sat Jun 26 20:38:11 2010 From: fenrir at elivagar.org (Laurent Aimar) Date: Sat, 26 Jun 2010 20:38:11 +0200 Subject: [vlc-devel] [PATCH] WAV Mux : Extend the muxer to support non-PCM codecs. In-Reply-To: <1277573377-21908-1-git-send-email-jmenon86@gmail.com> References: <1277573377-21908-1-git-send-email-jmenon86@gmail.com> Message-ID: <1277577491.17755.28.camel@localhost> Hi, On Sat, 2010-06-26 at 22:59 +0530, Jai Menon wrote: > The current muxer generates invalid files whenever any streams > with non-PCM codecs are used as input. This is fixed by using > a VLC codec ID-to-waveformat tag map. The map has been populated > with some codecs to begin with and can be extended as necessary. I think it might be better to use the table wave_format_tag_to_fourcc defined in vlc_codecs.h -- fenrir From jb at videolan.org Sat Jun 26 20:40:07 2010 From: jb at videolan.org (Jean-Baptiste Kempf) Date: Sat, 26 Jun 2010 20:40:07 +0200 Subject: [vlc-devel] [PATCH] WAV Mux : Extend the muxer to support non-PCM codecs. In-Reply-To: <1277573377-21908-1-git-send-email-jmenon86@gmail.com> References: <1277573377-21908-1-git-send-email-jmenon86@gmail.com> Message-ID: <20100626184007.GA17107@videolan.org> On Sat, Jun 26, 2010 at 10:59:37PM +0530, Jai Menon wrote : > - int i_bytes_per_sample, i_format; > + int i_bytes_per_sample, i_format, i; > bool b_ext; > > + for( i = 0; wformat_map[i][0]; i++) > + { > + if( wformat_map[i][0] == p_input->p_fmt->i_codec ) > + { > + i_format = wformat_map[i][1]; > + break; > + } > + } > + Still not liking C99 ? Best Regards, -- Jean-Baptiste Kempf http://www.jbkempf.com/ From jmenon86 at gmail.com Sat Jun 26 20:54:16 2010 From: jmenon86 at gmail.com (Jai Menon) Date: Sun, 27 Jun 2010 00:24:16 +0530 Subject: [vlc-devel] [PATCH] WAV Mux : Extend the muxer to support non-PCM codecs. In-Reply-To: <1277577491.17755.28.camel@localhost> References: <1277573377-21908-1-git-send-email-jmenon86@gmail.com> <1277577491.17755.28.camel@localhost> Message-ID: On Sun, Jun 27, 2010 at 12:08 AM, Laurent Aimar wrote: > Hi, > > On Sat, 2010-06-26 at 22:59 +0530, Jai Menon wrote: >> The current muxer generates invalid files whenever any streams >> with ?non-PCM codecs are used as input. This is fixed by using >> a VLC codec ID-to-waveformat tag map. The map has been populated >> with some codecs to begin with and can be extended as necessary. > ?I think it might be better to use the table wave_format_tag_to_fourcc > defined in vlc_codecs.h That table doesn't include the pcm fourccs. Do you want me to add those? -- Jai Menon From fenrir at elivagar.org Sat Jun 26 21:09:32 2010 From: fenrir at elivagar.org (Laurent Aimar) Date: Sat, 26 Jun 2010 21:09:32 +0200 Subject: [vlc-devel] [PATCH] WAV Mux : Extend the muxer to support non-PCM codecs. In-Reply-To: References: <1277573377-21908-1-git-send-email-jmenon86@gmail.com> <1277577491.17755.28.camel@localhost> Message-ID: <20100626190932.GB551@elivagar.org> On Sun, Jun 27, 2010 at 12:24:16AM +0530, Jai Menon wrote: > On Sun, Jun 27, 2010 at 12:08 AM, Laurent Aimar wrote: > > Hi, > > > > On Sat, 2010-06-26 at 22:59 +0530, Jai Menon wrote: > >> The current muxer generates invalid files whenever any streams > >> with ?non-PCM codecs are used as input. This is fixed by using > >> a VLC codec ID-to-waveformat tag map. The map has been populated > >> with some codecs to begin with and can be extended as necessary. > > ?I think it might be better to use the table wave_format_tag_to_fourcc > > defined in vlc_codecs.h > > That table doesn't include the pcm fourccs. Do you want me to add those? If you check that doing so doesn't break current usage of the table, yes, it would be great. -- fenrir From jbcode42 at gmail.com Sat Jun 26 21:23:17 2010 From: jbcode42 at gmail.com (Joel Blumen) Date: Sat, 26 Jun 2010 14:23:17 -0500 Subject: [vlc-devel] libvlc_media_discoverer_new_from_name return case Message-ID: <5F08612F-ECD6-4467-B800-DB826A789614@gmail.com> Hi, I have been looking at a VLCAssert that is getting caught in VLCKit when there is no internet connection. The cause appears to be libvlc_media_discoverer_new_from_name( libvlc_instance_t * p_inst, const char * psz_name) in media_discoverer.c which returns null when there is no internet connection. I have not yet confirmed if it does this for every name that it can receive. My question is this: Is this the intended behavior of this method to return null when there is no internet, and therefore VLCKit/Lunettes should handle the null generated due to lack of connectivity, or should this still return an object anyways? --Joel Blumen From jmenon86 at gmail.com Sat Jun 26 21:46:49 2010 From: jmenon86 at gmail.com (Jai Menon) Date: Sun, 27 Jun 2010 01:16:49 +0530 Subject: [vlc-devel] [PATCH] WAV Mux : Extend the muxer to support non-PCM codecs. In-Reply-To: <20100626190932.GB551@elivagar.org> References: <1277573377-21908-1-git-send-email-jmenon86@gmail.com> <1277577491.17755.28.camel@localhost> <20100626190932.GB551@elivagar.org> Message-ID: On Sun, Jun 27, 2010 at 12:39 AM, Laurent Aimar wrote: > On Sun, Jun 27, 2010 at 12:24:16AM +0530, Jai Menon wrote: >> On Sun, Jun 27, 2010 at 12:08 AM, Laurent Aimar wrote: >> > Hi, >> > >> > On Sat, 2010-06-26 at 22:59 +0530, Jai Menon wrote: >> >> The current muxer generates invalid files whenever any streams >> >> with ?non-PCM codecs are used as input. This is fixed by using >> >> a VLC codec ID-to-waveformat tag map. The map has been populated >> >> with some codecs to begin with and can be extended as necessary. >> > ?I think it might be better to use the table wave_format_tag_to_fourcc >> > defined in vlc_codecs.h >> >> That table doesn't include the pcm fourccs. Do you want me to add those? > ?If you check that doing so doesn't break current usage of the table, yes, > it would be great. done without breaking any current usage. -- Jai Menon -------------- next part -------------- A non-text attachment was scrubbed... Name: 0001-WAV-Mux-Extend-the-muxer-to-support-non-PCM-codecs.patch Type: text/x-patch Size: 2400 bytes Desc: not available URL: From fenrir at elivagar.org Sat Jun 26 21:51:58 2010 From: fenrir at elivagar.org (Laurent Aimar) Date: Sat, 26 Jun 2010 21:51:58 +0200 Subject: [vlc-devel] Dynamic range compressor patch In-Reply-To: References: <201006220353.57723.rem@videolan.org> <20100624190542.GA21497@elivagar.org> Message-ID: <20100626195158.GA2342@elivagar.org> On Fri, Jun 25, 2010 at 03:39:30PM -0500, Ron Wright wrote: > Hello, > > I have made many drastic changes in the compressor.c file and some minor > changes in the UI code.? Here are some of the changes: > > 1. Added VLC copyright and $id$ tag to the banner. > 2. Made the filter structure, RMS envelope structure, and attack lookup table > contiguous in memory so that only one memory allocation and one memory > deallocation is needed. > 3. Reorganized the functions so that they don't appear out of place. > 4. Removed two wasteful members (amplitude and gain reduction) from the filter > structure (this is probably used to implement output meters in certain LADSPA > frontends). > 5. The release of the mutex lock in the DoWork function now occurs immediately > after retrieving the shared values. > 6. Replaced the logic in the callback functions with clipping functions. > 7. Removed useless casts. > 8. Changed default values. > > Here are some notes to take into consideration: > > 1. The f_max and f_clamp functions work as expected.? Proof: > > f_max (with arguments x and a): > > If x < a, then 0.5 * ((x - a) + fabs(x - a)) + a = 0.5 * ((x - a) - (x - a)) + > a = a > If x >= a, then 0.5 * ((x - a) + fabs(x - a)) + a = 0.5 * ((x - a) + (x - a)) + > a = 0.5*2*(x - a) + a = x > > f_clamp (with arguments x, a, and b): > > If x < a, then 0.5 * (fabs(x - a) + a + b - fabs(x - b)) = 0.5 * (-(x - a) + a > + b + (x - b)) = 0.5 * (2*a - x + b + x - b) = a > If a <= x < b, then 0.5 * (fabs(x - a) + a + b - fabs(x - b)) = 0.5 * ((x - a) > + a + b + (x - b)) = 0.5 * (x + b + x - b) = x > If x >= b, then 0.5 * (fabs(x - a) + a + b - fabs(x - b)) = 0.5 * ((x - a) + a > + b - (x - b)) = 0.5 * (x + b - x + b) = b > > These are branchless clipping functions from Laurent de Soras. > > 2. A buffer overflow will not occur when either attack or release converted to > seconds is multiplied by (A_TBL - 1), with the resulting value used as an index > to retrieve the attack (or release) value from the lookup table.? The maximum > of the maximum values of attack and release is 800, and A_TBL is 256, so 800 * > 0.001 * 255 = 204.? This means that the index will neither go beyond 255 nor > even reach 255.? The minimum of the minimum values of attack and release is > 1.5.? However, the real minimum value used in the code is 2.? Nevertheless, > there will also be no buffer underflow, since this value is positive. Thanks, > diff --git a/modules/audio_filter/Modules.am b/modules/audio_filter/Modules.am > index eae73fc..7767cbe 100644 > --- a/modules/audio_filter/Modules.am > +++ b/modules/audio_filter/Modules.am > @@ -1,5 +1,6 @@ > SUBDIRS = channel_mixer converter resampler spatializer > SOURCES_equalizer = equalizer.c equalizer_presets.h > +SOURCES_compressor = compressor.c > SOURCES_normvol = normvol.c > SOURCES_audiobargraph_a = audiobargraph_a.c > SOURCES_param_eq = param_eq.c > @@ -9,6 +10,7 @@ SOURCES_chorus_flanger = chorus_flanger.c > libvlc_LTLIBRARIES += \ > libaudiobargraph_a_plugin.la \ > libchorus_flanger_plugin.la \ > + libcompressor_plugin.la \ > libequalizer_plugin.la \ > libnormvol_plugin.la \ > libparam_eq_plugin.la \ I am not sure, but seeing that you use mathematics functions, I think you also need to modify configure.ac to link with -lm. > diff --git a/modules/audio_filter/compressor.c b/modules/audio_filter/compressor.c > new file mode 100644 > index 0000000..daa260a > --- /dev/null > +++ b/modules/audio_filter/compressor.c > @@ -0,0 +1,683 @@ > +/***************************************************************************** > + * compressor.c: dynamic range compressor, ported from SC4 plugin > + ***************************************************************************** > + * Copyright (C) 2010 the VideoLAN team Please use your name instead of 'the VideoLAN team' (as the code is ported, dunno if the original copyright shouldn't be used too). > +#define A_TBL (256) > + > +#define DB_TABLE_SIZE (1024) > +#define DB_MIN (-60.0f) > +#define DB_MAX (24.0f) > +#define LIN_TABLE_SIZE (1024) > +#define LIN_MIN (0.0000000002f) > +#define LIN_MAX (9.0f) > +#define DB_DEFAULT_CUBE > +#define RMS_BUF_SIZE (64) > + > +#define LIN_INTERP(f,a,b) ((a) + (f) * ( (b) - (a) )) > + > +typedef struct > +{ > + float buffer[RMS_BUF_SIZE]; > + unsigned int pos; > + float sum; > + > +} rms_env; > + > +struct filter_sys_t > +{ > + float rms_peak; > + float attack; > + float release; > + float threshold; > + float ratio; > + float knee; > + float makeup_gain; > + > + float amp; > + float *as; > + unsigned int count; > + float env; > + float env_peak; > + float env_rms; > + float gain; > + float gain_thres; > + rms_env* rms; > + float sum; > + > + float db_data[DB_TABLE_SIZE]; > + float lin_data[LIN_TABLE_SIZE]; > + > + vlc_mutex_t lock; > +}; I meant to use directly rms_env rms; float as[A_TBL]. to simplify the allocation. Also, if you could move the variables protected by the lock below the declaration of the lock, it would make it easier to maintain. > +/***************************************************************************** > + * Open: initialize interface > + *****************************************************************************/ > + > +static int Open( vlc_object_t *p_this ) > +{ > + filter_t *p_filter = (filter_t*)p_this; > + vlc_object_t *p_aout = p_filter->p_parent; > + float sample_rate = p_filter->fmt_in.audio.i_rate; > + struct filter_sys_t *p_sys; > + unsigned int i; > + > + if( p_filter->fmt_in.audio.i_format != VLC_CODEC_FL32 || > + p_filter->fmt_out.audio.i_format != VLC_CODEC_FL32 ) > + { > + p_filter->fmt_in.audio.i_format = VLC_CODEC_FL32; > + p_filter->fmt_out.audio.i_format = VLC_CODEC_FL32; > + msg_Warn( p_filter, "bad input or output format" ); > + return VLC_EGENERIC; > + } > + if( !AOUT_FMTS_SIMILAR( &p_filter->fmt_in.audio, > + &p_filter->fmt_out.audio ) ) > + { > + memcpy( &p_filter->fmt_out.audio, &p_filter->fmt_in.audio, > + sizeof(audio_sample_format_t) ); p_filter->fmt_out.audio = p_filter->fmt_in.audio; is simpler. > + msg_Warn( p_filter, "input and output formats are not similar" ); > + return VLC_EGENERIC; > + } > + > + p_sys = p_filter->p_sys = calloc( 1, sizeof(struct filter_sys_t) > + + sizeof(rms_env) > + + A_TBL * sizeof(float) ); > + if( !p_sys ) > + { > + return VLC_ENOMEM; > + } > + p_sys->rms = (rms_env*)( p_sys + 1 ); > + p_sys->as = (float *)( p_sys->rms + 1 ); See remarks above at filter_sys_t. > +/***************************************************************************** > + * Close: destroy interface > + *****************************************************************************/ > + > +static void Close( vlc_object_t *p_this ) > +{ > + filter_t *p_filter = (filter_t*)p_this; > + vlc_object_t *p_aout = p_filter->p_parent; > + struct filter_sys_t *p_sys = p_filter->p_sys; > + > + var_DelCallback( p_aout, "compressor-rms-peak", RMSPeakCallback, p_sys ); > + var_DelCallback( p_aout, "compressor-attack", AttackCallback, p_sys ); > + var_DelCallback( p_aout, "compressor-release", ReleaseCallback, p_sys ); > + var_DelCallback( p_aout, "compressor-threshold", ThresholdCallback, p_sys ); > + var_DelCallback( p_aout, "compressor-ratio", RatioCallback, p_sys ); > + var_DelCallback( p_aout, "compressor-knee", KneeCallback, p_sys ); > + var_DelCallback( p_aout, "compressor-makeup-gain", MakeupGainCallback, > + p_sys ); > + > + vlc_mutex_destroy( &p_sys->lock ); > + > + free( p_sys ); > +} > + > +/***************************************************************************** > + * DoWork: process samples buffer > + *****************************************************************************/ > + > +static block_t * DoWork( filter_t * p_filter, block_t * p_in_buf ) > +{ > + int i_samples = p_in_buf->i_nb_samples; > + int i_channels = aout_FormatNbChannels( &p_filter->fmt_in.audio ); > + float *p_buf = (float*)p_in_buf->p_buffer; > + > + float rms_peak, attack, release, threshold, ratio, knee, makeup_gain; > + float amp, *as, env, env_peak, env_rms, gain, gain_thres, sum; > + unsigned int count; > + rms_env *rms; > + > + float ga, gr, rs, mug, knee_min, knee_max, ef_a, ef_ai; > + > + int pos, pos_chan; > + > + /* Current configuration */ > + struct filter_sys_t *p_sys = p_filter->p_sys; > + > + vlc_mutex_lock( &p_sys->lock ); > + > + /* RMS/peak (float value) */ > + rms_peak = p_sys->rms_peak; > + > + /* Attack time (ms) (float value) */ > + attack = p_sys->attack; > + > + /* Release time (ms) (float value) */ > + release = p_sys->release; > + > + /* Threshold level (dB) (float value) */ > + threshold = p_sys->threshold; > + > + /* Ratio (n:1) (float value) */ > + ratio = p_sys->ratio; > + > + /* Knee radius (dB) (float value) */ > + knee = p_sys->knee; > + > + /* Makeup gain (dB) (float value) */ > + makeup_gain = p_sys->makeup_gain; > + > + vlc_mutex_unlock( &p_sys->lock ); > + > + amp = p_sys->amp; > + as = p_sys->as; > + count = p_sys->count; > + env = p_sys->env; > + env_peak = p_sys->env_peak; > + env_rms = p_sys->env_rms; > + gain = p_sys->gain; > + gain_thres = p_sys->gain_thres; > + rms = p_sys->rms; > + sum = p_sys->sum; > + > + ga = attack < 2.0f ? 0.0f > + : as[f_round( attack * 0.001f * ( A_TBL - 1 ) )]; > + gr = as[f_round( release * 0.001f * ( A_TBL - 1 ) )]; > + rs = ( ratio - 1.0f ) / ratio; > + mug = db2lin( makeup_gain, p_sys ); > + knee_min = db2lin( threshold - knee, p_sys ); > + knee_max = db2lin( threshold + knee, p_sys ); > + ef_a = ga * 0.25f; > + ef_ai = 1.0f - ef_a; > + for( pos = 0; pos < i_samples; pos++ ) If you want, you can also declare a variable inside code (we accept c99) or in for() statement. Regards, -- fenrir From jb at videolan.org Sat Jun 26 21:51:47 2010 From: jb at videolan.org (Jean-Baptiste Kempf) Date: Sat, 26 Jun 2010 21:51:47 +0200 Subject: [vlc-devel] Dynamic range compressor patch In-Reply-To: <20100626195158.GA2342@elivagar.org> References: <201006220353.57723.rem@videolan.org> <20100624190542.GA21497@elivagar.org> <20100626195158.GA2342@elivagar.org> Message-ID: <20100626195147.GA7159@videolan.org> On Sat, Jun 26, 2010 at 09:51:58PM +0200, Laurent Aimar wrote : > > + * Copyright (C) 2010 the VideoLAN team > Please use your name instead of 'the VideoLAN team' (as the code is ported, dunno > if the original copyright shouldn't be used too). or "VideoLAN and AUTHORS" and if you are not in AUTHORS file, add yours. Best Regards, -- Jean-Baptiste Kempf http://www.jbkempf.com/ From rem at videolan.org Sat Jun 26 21:52:27 2010 From: rem at videolan.org (=?iso-8859-1?q?R=E9mi?= Denis-Courmont) Date: Sat, 26 Jun 2010 22:52:27 +0300 Subject: [vlc-devel] libvlc_media_discoverer_new_from_name return case In-Reply-To: <5F08612F-ECD6-4467-B800-DB826A789614@gmail.com> References: <5F08612F-ECD6-4467-B800-DB826A789614@gmail.com> Message-ID: <201006262252.28038.rem@videolan.org> On Saturday 26 June 2010 22:23:17 Joel Blumen, you wrote: > Hi, > > I have been looking at a VLCAssert that is getting caught in VLCKit when > there is no internet connection. The cause appears to be > libvlc_media_discoverer_new_from_name( libvlc_instance_t * p_inst, const > char * psz_name) in media_discoverer.c which returns null when there is no > internet connection. I have not yet confirmed if it does this for every > name that it can receive. > > My question is this: Is this the intended behavior of this method to return > null when there is no internet, and therefore VLCKit/Lunettes should > handle the null generated due to lack of connectivity, or should this > still return an object anyways? That should return NULL if the media service failed to start. What that means will depend on the specific service. -- R?mi Denis-Courmont From fenrir at elivagar.org Sat Jun 26 21:07:00 2010 From: fenrir at elivagar.org (Laurent Aimar) Date: Sat, 26 Jun 2010 21:07:00 +0200 Subject: [vlc-devel] Media library Include file and Core In-Reply-To: References: Message-ID: <20100626190700.GA551@elivagar.org> Hi, On Mon, Jun 21, 2010 at 11:23:35PM +0530, Srikanth Raju wrote: > Hello, > I have attached two patches. I will merge these into master by Wednesday if > nobody has any problems with them. These are the include files and some minor > changes to the core. It seems that I am too late but here is a first pass (I probably didn't see all issues). > +/** List of Query select types. > + * In a query array or variable argument list, each select type is followed > + * by an argument (X) of variable type (char* or int, @see ml_element_t). > + * These types can be used either in the query list or in the result array. > + * Some types are reserved for the result array: > + */ > +typedef enum > +{ > + ML_ALBUM = 1, /**< Album Title */ > + ML_ALBUM_ID, /**< Album ID */ > + ML_ALBUM_COVER, /**< Album Cover art url */ > + /* FIXME: Remove ML_ARTIST */ > + ML_ARTIST, /**< Artist, interpreted as ML_PEOPLE > + && ML_PEOPLE_ROLE = ML_PERSON_ARTIST */ > + ML_ARTIST_ID, /**< Artist ID, interpreted as ML_PEOPLE_ID > + && ML_PEOPLE_ROLE = ML_PERSON_ARTIST */ > + ML_COMMENT, /**< Comment about media */ > + ML_COUNT_MEDIA, /**< Number of medias */ > + ML_COUNT_ALBUM, /**< Number of albums */ > + ML_COUNT_PEOPLE, /**< Number of people */ > + ML_COVER, /**< Cover art url */ > + ML_DURATION, /**< Duration in ms */ > + ML_DISC_NUMBER, /**< Disc number of the track */ > + ML_EXTRA, /**< Extra/comment (string) on the media */ > + ML_FIRST_PLAYED, /**< First time media was played */ > + ML_FILESIZE, /**< Size of the media file */ > + ML_GENRE, /**< Genre of the media (if any) */ > + ML_ID, /**< Media ID */ > + ML_IMPORT_TIME, /**< Date when media was imported */ > + ML_LANGUAGE, /**< Language */ > + ML_LAST_PLAYED, /**< Last play UNIX timestamp */ > + ML_LAST_SKIPPED, /**< Time when media was last skipped */ > + ML_ORIGINAL_TITLE, /**< Media original title (if any) */ > + ML_PEOPLE, /**< Any People associated with this media */ > + ML_PEOPLE_ID, /**< Id of a person */ > + ML_PEOPLE_ROLE, /**< Person role */ > + ML_PLAYED_COUNT, /**< Media play count */ > + ML_PREVIEW, /**< Url of the video preview */ > + ML_SKIPPED_COUNT, /**< Number of times skipped */ > + ML_SCORE, /**< Computed media score */ > + ML_TITLE, /**< Media title */ > + ML_TRACK_NUMBER, /**< Media track number (if any) */ > + ML_TYPE, /**< Media type. @see ml_type_e */ > + ML_URI, /**< Media full URI. */ > + ML_VOTE, /**< Media user vote value */ > + ML_YEAR, /**< Media publishing year */ > + ML_DIRECTORY, /**< Monitored directory */ > + ML_MEDIA, /**< Full media descriptor. @see ml_media_t */ > + ML_MEDIA_SPARSE, /**< Sparse media. @see ml_media_t */ > + ML_MEDIA_EXTRA, /**< Sparse + Extra = Full media */ > + > + /* Some special elements */ > + ML_LIMIT = -1, /**< Limit a query to X results */ > + ML_SORT_DESC = -2, /**< Sort a query descending on argument X */ > + ML_SORT_ASC = -3, /**< Sort a query ascending on argument X */ > + ML_DISTINCT = -4, /**< Add DISTINCT to SELECT statements. */ > + ML_END = -42 /**< End of argument list */ > +} ml_select_e; > + > +/** Media types (audio, video, etc...) */ > +typedef enum > +{ > + ML_UNKNOWN = 0, /**< Unknown media type */ > + ML_AUDIO = 1 << 0, /**< Audio only media */ > + ML_VIDEO = 1 << 1, /**< Video media. May contain audio channels */ > + ML_STREAM = 1 << 2, /**< Streamed media = not a local file */ > + ML_NODE = 1 << 3, /**< Nodes like simple nodes, directories, playlists, etc */ > + ML_REMOVABLE = 1 << 4, /**< Removable media: CD/DVD/Card/... */ > +} ml_type_e; > + > +/** Query result item/list type: integers, strings, medias, timestamps */ > +typedef enum { > + ML_TYPE_INT, /**< Object is an int */ > + ML_TYPE_PSZ, /**< A string char* */ > + ML_TYPE_TIME, /**< A timestamp mtime_t */ > + ML_TYPE_MEDIA, /**< A pointer to a media ml_media_t* */ > +} ml_result_type_e; > + > +/** Arguments for VLC Control for the media library */ > +typedef enum > +{ > + ML_SET_DATABASE, /**< arg1 = char *psz_host > + arg2 = int i_port > + arg3 = char *psz_user > + arg4 = char *psz_pass */ > + ML_INIT_DATABASE, /**< No arg */ > + ML_ADD_INPUT_ITEM, /**< arg1 = input_item_t* */ > + ML_ADD_PLAYLIST_ITEM, /**< arg1 = playlist_item_t * */ > + ML_ADD_MONITORED, /**< arg1 = char* */ > + ML_DEL_MONITORED, /**< arg1 = char* */ > + ML_GET_MONITORED, /**< arg1 = vlc_array_t* */ > +} ml_control_e; > + > +/* Operations that can be specified between find conditions */ > +typedef enum > +{ > + ML_OP_NONE = 0, /**< This is to specify an actual condition */ > + ML_OP_AND, /**< AND condition */ > + ML_OP_OR, /**< OR condition */ > + ML_OP_NOT, /**< NOT condition */ > + ML_OP_SPECIAL /**< This is for inclusion of > + * special stuffs like LIMIT */ > +} ml_op_e; > + > +/* Comparison operators used in a single find condition */ > +typedef enum > +{ > + ML_COMP_NONE = 0, > + ML_COMP_LESSER, ///< < > + ML_COMP_LESSER_OR_EQUAL, ///< <= > + ML_COMP_EQUAL, ///< == > + ML_COMP_GREATER_OR_EQUAL, ///< >= > + ML_COMP_GREATER, ///< > > + ML_COMP_HAS, ///< "Contains", equivalent to SQL "LIKE %x%" > + ML_COMP_STARTS_WITH, ///< Equivalent to SQL "LIKE %x" > + ML_COMP_ENDS_WITH, ///< Equivalent to SQL "LIKE x%" > +} ml_comp_e; > + > +/***************************************************************************** > + * ML Structures and types > + *****************************************************************************/ > + > +typedef struct media_library_t media_library_t; > +typedef struct media_library_sys_t media_library_sys_t; > + > +typedef struct ml_media_t ml_media_t; > +typedef struct ml_result_t ml_result_t; > +typedef struct ml_element_t ml_element_t; > +typedef struct ml_person_t ml_person_t; > +typedef struct ml_ftree_t ml_ftree_t; > + > + > +typedef struct ml_gc_object_t > +{ > + vlc_spinlock_t spin; > + bool pool; > + uintptr_t refs; > + void (*pf_destructor) (struct ml_gc_object_t *); > +} ml_gc_object_t; > + > +#define ML_GC_MEMBERS ml_gc_object_t ml_gc_data; Why gc_object_t isn't enough? > +/** Main structure of the media library. VLC object. */ > +struct media_library_t > +{ > + VLC_COMMON_MEMBERS > + > + module_t *p_module; /**< the media library module */ > + media_library_sys_t *p_sys; /**< internal struture */ > + > + /** Member functions */ > + struct > + { > + /**< Search in the database */ > + int ( * pf_Find ) ( media_library_t *p_media_library, > + vlc_array_t *p_result_array, > + va_list args ); > + > + /**< Search in the database using an array of arguments */ > + int ( * pf_FindAdv ) ( media_library_t *p_media_library, > + vlc_array_t *p_result_array, > + ml_select_e selected_type, > + const char *psz_lvalue, > + ml_ftree_t *tree ); > + > + /**< Update the database using an array of arguments */ > + int ( * pf_Update ) ( media_library_t *p_media_library, > + ml_select_e selected_type, > + const char *psz_lvalue, > + ml_ftree_t *where, > + vlc_array_t *changes ); > + > + /**< Delete many medias in the database */ > + int ( * pf_Delete ) ( media_library_t *p_media_library, > + vlc_array_t *p_array ); > + > + /**< Control the media library */ > + int ( * pf_Control ) ( media_library_t *p_media_library, > + int i_query, va_list args ); > + > + /**< Create associated input item */ > + input_item_t* ( * pf_InputItemFromMedia ) ( > + media_library_t *p_media_library, int i_media ); > + > + /**< Get a media */ > + ml_media_t* ( * pf_GetMedia ) ( > + media_library_t *p_media_library, int i_media, > + ml_select_e select, bool reload ); > + } functions; > +}; Why is media_library_t a module? Do you plan to have multiple implementations of it? It would also be nicer to not use camel case for function pointers (as we do for every other module in vlc). Why pf_Find and pf_FindAdv? Isn't pf_Find a special case of pf_FindAdv? If so, a wrapper could reuse it instead of having the module defines 2 functions. > + * @brief Structure to describe a media > + * > + * This is the main structure holding the meta data in ML. > + * @see b_sparse indicates whether the media struct has valid values > + * in its Extra fields. Otherwise, it must be loaded with the API > + * function. > + * @see i_id indicates whether this struct is saved in the ML if i_id > 0 > + * Otherwise, it can be added to the database > + */ > +struct ml_media_t > +{ > + ML_GC_MEMBERS > + vlc_mutex_t lock; /**< Mutex for multithreaded access */ > + bool b_sparse; /**< Specifies if media is loaded fully */ > + ml_type_e i_type; /**< Type of the media (ml_type_e) */ Looking at ml_type_e, it seems intended to be used to store a 'or' of multiple values. If so, it is illegal to use ml_type_e. > + int8_t i_vote; /**< User vote */ > + int16_t i_disc_number; /**< Disc number of media */ > + int16_t i_track_number; /**< Track number */ > + int16_t i_year; /**< Year of release */ > + int32_t i_id; /**< Media ID in the database */ > + int32_t i_score; /**< Score computed about the media */ > + int32_t i_album_id; /**< Album id */ > + int32_t i_played_count; /**< How many time the media was played */ > + int32_t i_skipped_count; /**< No. of times file was skipped */ > + int32_t i_bitrate; /**< Extra: Bitrate of the media */ > + int32_t i_samplerate; /**< Extra: Samplerate of the media */ > + int32_t i_bpm; /**< Extra: Beats per minute */ > + char *psz_uri; /**< URI to find the media */ > + char *psz_title; /**< Title of the media */ > + char *psz_orig_title; /**< Original title (mainly for movies) */ > + char *psz_album; /**< Name of the album */ > + char *psz_cover; /**< URI of the cover */ > + char *psz_genre; /**< Genre of the media */ > + char *psz_preview; /**< Preview thumbnail for video, if any */ > + char *psz_comment; /**< Comment or description about media */ > + char *psz_language; /**< Extra: Language */ > + char *psz_extra; /**< Extra: Some extra datas like lyrics */ > + ml_person_t *p_people; /**< Extra: People associated with this > + media This meta holds only one > + artist if b_sparse = true */ > + int64_t i_filesize; /**< Size of the file */ > + mtime_t i_duration; /**< Duration in microseconds */ > + mtime_t i_last_played; /**< Time when the media was last played */ > + mtime_t i_last_skipped; /**< Time when the media was last skipped */ > + mtime_t i_first_played; /**< First played */ > + mtime_t i_import_time; /**< Time when media was added */ > + > +}; > + > + > +/** > + * @brief Main communication struct between GUI and sql_media_library. > + * Generic representation of an ML/SQL query result. > + */ > +struct ml_result_t > +{ > + int32_t id; /**< Media/Album/Artist... ID (if any) */ > + ml_result_type_e type; /**< Type of value */ > + union > + { > + /* Classical results */ > + int i; > + char *psz; > + mtime_t time; > + > + /* Complex result: media descriptor */ > + ml_media_t *p_media; > + } value; /**< Value of the result obtained */ > +}; > + > + > +/** > + * @brief Element of a query: criteria type/value pair > + * Used for update and delete queries > + */ > +struct ml_element_t > +{ > + ml_select_e criteria; /**< SELECT criteria type. @see ml_select_e */ > + union > + { > + int i; > + char* str; > + } value; /**< SELECT criteria value (string or int) */ > + union > + { > + int i; > + char* str; > + } lvalue; /**< Refer to @see ml_ftree_t lvalue docs */ > +}; > + > +/** > + * Binary tree used to parse the WHERE condition for a search > + * > + * Let [expr] indicate a valid expression > + * [expr] = [expr] AND [expr], where the left and right are respective > + * [expr] = [expr] OR [expr] > + * [expr] = [expr] NOT [NULL] > + * [expr] = [expr] SPEC [spec_expr] > + * [expr] = [criteria=val] > + * [spec_expr] = [DISTINCT/LIMIT/ASC/DESC = val ] > + */ > +struct ml_ftree_t > +{ > + ml_op_e op; /**< Operator. ML_OP_NONE means this is a leaf > + * node. Criteria and value gives its data. > + * ML_OP_SPECIAL specifies a special node > + * that does not form a part of the WHERE. > + * The right node consists of the data > + * with its criteria set to the special val > + * and the left node is the corresponding > + * subtree of the parent node. > + * ML_OP_NOT only left sub tree is considered > + * ML_OP_AND and ML_OP_OR consider both > + * left and right subtrees */ > + ml_ftree_t *left; /**< Left child of Bin tree */ > + ml_ftree_t *right; /**< Right child of Bin tree */ > + ml_select_e criteria; /**< SELECT criteria type @see ml_select_e > + * The criteria value is considered only when > + * op = ML_OP_NONE i.e. in leaf nodes */ > + ml_comp_e comp; /**< Condition between type and value */ > + union > + { > + int i; > + char *str; > + } value; /**< SELECT criteria value ( string or int ) */ > + union > + { > + int i; > + char *str; > + } lvalue; /**< Used as key value for people types/roles. > + An empty string "" denotes ANY person role. > + NULL is used for all other criterias */ > +}; > + > + > +/** > + * Person class. Implemented as a linked list > + */ > +struct ml_person_t > +{ > + char *psz_role; /**< Type of person */ > + char *psz_name; /**< Name of the person */ > + int i_id; /**< ID in the database */ > + ml_person_t *p_next; /**< Next person in list */ > +}; > + > + > +/***************************************************************************** > + * ML Function headers > + *****************************************************************************/ > + > +/** > + * @brief Acquire a reference to the media library singleton > + * @param p_this The object holding the media library > + * @return The media library object. NULL if the media library > + * object could not be loaded > + */ > +VLC_EXPORT( media_library_t*, __ml_Hold, ( vlc_object_t* p_this ) ); > +#define ml_Hold( a ) __ml_Hold( VLC_OBJECT(a) ) > + > +/** > + * @brief Discard your ref to media library > + * @param p_this The object holding the media library > + */ > +VLC_EXPORT( void, __ml_Release, ( vlc_object_t* p_this ) ); > +#define ml_Release(a) __ml_Release( VLC_OBJECT(a)) > + > +/** > + * @brief Create a Media Library VLC object. > + * @param p_this Parent to attach the ML object to. > + * @param psz_name Name for the module > + * @return The ML object. > + */ > +VLC_EXPORT( media_library_t*, __ml_Create, ( vlc_object_t *p_this, char* psz_name ) ); > + > +/** > + * @brief Destructor for the Media library singleton > + * @param p_this Parent the ML object is attached to > + */ > +VLC_EXPORT( void, __ml_Destroy, ( vlc_object_t* p_this ) ); Do not add more functions with __ prefix. You can easily do (for example): VLC_EXPORT( void, ml_Release, ( vlc_object_t* p_this ) ); #define ml_Release(a) ml_Release( VLC_OBJECT(a)) and then simply do void (ml_Release)( vlc_object_t* p_this ) { code; } > +/** > + * @brief Control the Media Library > + * @param p_media_library the media library object > + * @param i_type one of ml_control_e values @see ml_control_e. > + * @param ... optional arguments. > + * @return VLC_SUCCESS or an error > + */ > +static inline int ml_ControlVa( media_library_t *p_media_library, > + ml_control_e i_type, va_list args ) > +{ > + return p_media_library->functions.pf_Control( p_media_library, > + i_type, > + args ); > +} > + > +/** > + * @brief Control the Media Library > + * @param i_type one of ml_control_e values @see ml_control_e. > + * Variable arguments list equivalent > + */ > +#define ml_Control( a, b, args... ) __ml_Control( a, b, ## args ) > +static inline int __ml_Control( media_library_t *p_media_library, > + ml_control_e i_type, ... ) > +{ > + va_list args; > + int returned; > + > + va_start( args, i_type ); > + returned = ml_ControlVa( p_media_library, i_type, args ); > + va_end( args ); > + > + return returned; > +} > + > +/** > + * @brief Determine an attribute's type (int or string) > + * @param meta Attribute to test @see ml_select_e > + * @return -1 if invalid, 0 if this is an integer, 1 if this is a string > + */ > +static inline int ml_AttributeIsString( ml_select_e meta ) > +{ > + switch( meta ) > + { > + /* Strings */ > + case ML_ALBUM: > + case ML_ARTIST: > + case ML_COMMENT: > + case ML_COVER: > + case ML_EXTRA: > + case ML_GENRE: > + case ML_LANGUAGE: > + case ML_PREVIEW: > + case ML_PEOPLE: > + case ML_PEOPLE_ROLE: > + case ML_ORIGINAL_TITLE: > + case ML_TITLE: > + case ML_URI: > + return 1; > + > + /* Integers */ > + case ML_ALBUM_ID: > + case ML_ARTIST_ID: > + case ML_DURATION: > + case ML_DISC_NUMBER: > + case ML_COUNT_MEDIA: > + case ML_COUNT_ALBUM: > + case ML_COUNT_PEOPLE: > + case ML_FILESIZE: > + case ML_FIRST_PLAYED: > + case ML_ID: > + case ML_IMPORT_TIME: > + case ML_LAST_PLAYED: > + case ML_LIMIT: > + case ML_PLAYED_COUNT: > + case ML_PEOPLE_ID: > + case ML_SCORE: > + case ML_SKIPPED_COUNT: > + case ML_TRACK_NUMBER: > + case ML_TYPE: > + case ML_VOTE: > + case ML_YEAR: > + return 0; > + > + /* Invalid or no following value (in a SELECT statement) */ > + default: > + return -1; > + } > +} > + > +/* Reference Counting Functions */ > +/** > + * @brief Increment reference count of media > + * @param p_media The media object > + */ > +static inline void ml_gc_incref( ml_media_t* p_media ) > +{ > + unsigned refs; > + ml_gc_object_t* p_gc = &p_media->ml_gc_data; > + assert( p_gc ); > + > + vlc_spin_lock (&p_gc->spin); > + refs = ++p_gc->refs; > + vlc_spin_unlock (&p_gc->spin); > + assert (refs != 1); /* there had to be a reference already */ > +} > + > +/** > + * @brief Decrease reference count of media > + * @param p_media The media object > + */ > +static inline void ml_gc_decref( ml_media_t* p_media ) > +{ > + /* The below code is from vlc_release(). */ > + unsigned refs; > + bool pool; > + ml_gc_object_t* p_gc = &p_media->ml_gc_data; > + assert( p_gc ); > + > + vlc_spin_lock (&p_gc->spin); > + assert( p_gc->refs != 0 ); > + refs = --p_gc->refs; > + pool = p_gc->pool; > + assert( ( refs != 0 && p_gc->pool == true ) || ( refs == 0 && p_gc->pool == false ) ); > + vlc_spin_unlock (&p_gc->spin); > + > + if( refs == 0 && pool == false ) > + { > + vlc_spin_destroy (&p_gc->spin); > + p_gc->pf_destructor (p_gc); > + } > +} > + > +/***************************************************************************** > + * ML Free Functions > + *****************************************************************************/ > + > +/** > + * @brief Free a person object > + * @param p_media Person object to free > + * @note This function is NOT threadsafe > + */ > +static inline void ml_FreePeople( ml_person_t *p_person ) > +{ > + if( p_person == NULL ) > + return; > + ml_FreePeople( p_person->p_next ); > + free( p_person->psz_name ); > + free( p_person->psz_role ); > + free( p_person ); > +} > + > +/** > + * @brief Free only the content of a media. @see ml_media_t > + * @param p_media Media object > + * @note This function is NOT threadsafe. > + */ > +static inline void ml_FreeMediaContent( ml_media_t *p_media ) > +{ > + free( p_media->psz_uri ); > + free( p_media->psz_title ); > + free( p_media->psz_orig_title ); > + free( p_media->psz_cover ); > + free( p_media->psz_comment ); > + free( p_media->psz_extra ); > + free( p_media->psz_genre ); > + free( p_media->psz_album ); > + free( p_media->psz_preview ); > + free( p_media->psz_language ); > + ml_FreePeople( p_media->p_people ); > + p_media->b_sparse = true; > + p_media->i_id = 0; > + p_media->i_type = ML_UNKNOWN; > + p_media->i_album_id = 0; > + p_media->i_disc_number = 0; > + p_media->i_track_number = 0; > + p_media->i_year = 0; > + p_media->i_vote = 0; > + p_media->i_score = 0; > + p_media->i_filesize = 0; > + p_media->i_duration = 0; > + p_media->i_played_count = 0; > + p_media->i_last_played = 0; > + p_media->i_skipped_count = 0; > + p_media->i_last_skipped = 0; > + p_media->i_first_played = 0; > + p_media->i_import_time = 0; > + p_media->i_bitrate = 0; > + p_media->i_samplerate = 0; > + p_media->i_bpm = 0; > +} > + > +/** > + * @brief Free a result item. @see ml_result_t > + * @param p_result Result item to free > + * @note This will free any strings and decref medias. > + */ > +static inline void ml_FreeResult( ml_result_t *p_result ) > +{ > + if( p_result ) > + { > + switch( p_result->type ) > + { > + case ML_TYPE_PSZ: > + free( p_result->value.psz ); > + break; > + case ML_TYPE_MEDIA: > + ml_gc_decref( p_result->value.p_media ); > + break; > + default: > + break; > + } > + free( p_result ); > + } > +} > + > + > +/** > + * @brief Free a ml_element_t item. > + * @param p_find Find object to free > + * @see ml_element_t */ > +static inline void ml_FreeElement( ml_element_t *p_elt ) > +{ > + if( p_elt ) > + { > + if( ml_AttributeIsString( p_elt->criteria ) ) > + { > + free( p_elt->value.str ); > + } > + if( p_elt->criteria == ML_PEOPLE ) > + { > + free( p_elt->lvalue.str ); > + } > + free( p_elt ); > + } > +} > + > + > +/** > + * @brief Destroy a vlc_array_t of ml_result_t > + * @param ml_result_array The result array to free > + * @note Frees all results and contents of the results > + */ > +static inline void ml_DestroyResultArray( vlc_array_t *p_result_array ) > +{ > + for( int i = 0; i < vlc_array_count( p_result_array ); i++ ) > + { > + ml_FreeResult( ( ml_result_t* ) vlc_array_item_at_index( > + p_result_array, i ) ); > + } > +} > + > + > + > +/***************************************************************************** > + * ML Object Management Functions > + *****************************************************************************/ > + > +/** Helpers for locking and unlocking */ > +#define ml_LockMedia( a ) vlc_mutex_lock( &a->lock ) > +#define ml_UnlockMedia( a ) vlc_mutex_unlock( &a->lock ) > + > +/** > + * @brief Object constructor for ml_media_t > + * @param p_ml The media library object > + * @param id If 0, this item isn't in database. If non zero, it is and > + * it will be a singleton > + * @param select Type of object > + * @param reload Whether to reload from database > + */ > +VLC_EXPORT( ml_media_t*, media_New, ( media_library_t* p_ml, int id, > + ml_select_e select, bool reload ) ); > + > + > +/* Forward declaration */ > +static inline int ml_CopyPersons( ml_person_t** a, ml_person_t* b ); > + > +/** > + * @brief Copy all members of a ml_media_t to another. > + * @param b Destination media, already allocated > + * @param a Source media, cannot be NULL, const > + * @note This does not check memory allocation (for strdup). It is threadsafe > + * @todo Free b content, before inserting a? > + */ > +static inline int ml_CopyMedia( ml_media_t *b, ml_media_t *a ) > +{ > + if( !a || !b ) return VLC_EGENERIC; > + assert( a != b ); > + ml_LockMedia( a ); > + ml_LockMedia( b ); > + b->b_sparse = a->b_sparse; > + b->i_id = a->i_id; > + b->i_type = a->i_type; > + b->i_album_id = a->i_album_id; > + b->i_disc_number = a->i_disc_number; > + b->i_track_number = a->i_track_number; > + b->i_year = a->i_year; > + b->i_vote = a->i_vote; > + b->i_score = a->i_score; > + b->i_filesize = a->i_filesize; > + b->i_duration = a->i_duration; > + b->i_played_count = a->i_played_count; > + b->i_last_played = a->i_last_played; > + b->i_skipped_count = a->i_skipped_count; > + b->i_last_skipped = a->i_last_skipped; > + b->i_first_played = a->i_first_played; > + b->i_import_time = a->i_import_time; > + b->i_bitrate = a->i_bitrate; > + b->i_samplerate = a->i_samplerate; > + b->i_bpm = a->i_bpm; > + free( b->psz_uri ); > + if( a->psz_uri ) > + b->psz_uri = strdup( a->psz_uri ); > + free( b->psz_title ); > + if( a->psz_title ) > + b->psz_title = strdup( a->psz_title ); > + free( b->psz_orig_title ); > + if( a->psz_orig_title ) > + b->psz_orig_title = strdup( a->psz_orig_title ); > + free( b->psz_album ); > + if( a->psz_album ) > + b->psz_album = strdup( a->psz_album ); > + free( b->psz_cover ); > + if( a->psz_cover ) > + b->psz_cover = strdup( a->psz_cover ); > + free( b->psz_genre ); > + if( a->psz_genre ) > + b->psz_genre = strdup( a->psz_genre ); > + free( b->psz_comment ); > + if( a->psz_comment ) > + b->psz_comment = strdup( a->psz_comment ); > + free( b->psz_extra ); > + if( a->psz_extra ) > + b->psz_extra = strdup( a->psz_extra ); > + free( b->psz_preview ); > + if( a->psz_preview ) > + b->psz_preview = strdup( a->psz_preview ); > + free( b->psz_language ); > + if( a->psz_language ) > + b->psz_language = strdup( a->psz_language ); > + ml_FreePeople( b->p_people ); > + if( a->p_people ) ml_CopyPersons( &( b->p_people ), a->p_people ); > + ml_UnlockMedia( b ); > + ml_UnlockMedia( a ); > + return VLC_SUCCESS; > +} > + > +/***************************************************************************** > + * ML Find Tree Related Functions > + *****************************************************************************/ > +#define ml_FreeFindTree( tree ) ml_GenericFreeFindTree( tree, true ) > +#define ml_ShallowFreeFindTree( tree ) ml_GenericFreeFindTree( tree, false ) > +/** > + * @brief Free a find tree > + * @param Find tree to free > + * @param true to free any associated strings, false to not free them > + */ > +static inline void ml_GenericFreeFindTree( ml_ftree_t* tree, bool freestrings ) > +{ > + if( tree == NULL ) > + return; > + if( tree->left ) > + { > + ml_GenericFreeFindTree( tree->left, freestrings ); > + free( tree->left ); > + } > + if( tree->right ) > + { > + ml_GenericFreeFindTree( tree->right, freestrings ); > + free( tree->right ); > + } > + if( tree->op == ML_OP_NONE && ml_AttributeIsString( tree->criteria ) > + && freestrings == true) > + { > + free( tree->value.str ); > + if( tree->criteria == ML_PEOPLE ) > + free( tree->lvalue.str ); > + } > +} > + > +/** > + * @brief Checks if a given find tree has leaf nodes > + * @param Find tree > + * @return Number of leaf nodes > + */ > +static inline int ml_FtreeHasOp( ml_ftree_t* tree ) > +{ > + if( tree == NULL ) > + return 0; > + if( tree->criteria > 0 && tree->op == ML_OP_NONE ) > + return 1; > + else > + return ml_FtreeHasOp( tree->left ) + ml_FtreeHasOp( tree->right ); > +} It seems to me that a lot of theses functions have no need to be defines as inline functions, and it would be way better to move them out of the .h > +/** > + * @brief Connect up a find tree > + * @param op operator to connect with > + * If op = ML_OP_NONE, then you are connecting to a tree consisting of > + * only SPECIAL nodes. > + * If op = ML_OP_NOT, then right MUST be NULL > + * op must not be ML_OP_SPECIAL, @see __ml_FtreeSpec > + * @param left part of the tree > + * @param right part of the tree > + * @return Pointer to new tree > + * @note Use the helpers! > + */ > +VLC_EXPORT( ml_ftree_t*, ml_OpConnectChilds, ( ml_op_e op, ml_ftree_t* left, > + ml_ftree_t* right ) ); > + > +/** > + * @brief Attaches a special node to a tree > + * @param tree Tree to attach special node to > + * @param crit Criteria may be SORT_ASC, SORT_DESC, LIMIT or DISTINCT > + * @param limit Limit used if LIMIT criteria used > + * @param Sort string used if SORT criteria is used > + * @return Pointer to new tree > + * @note Use the helpers > + */ > +VLC_EXPORT( ml_ftree_t*, __ml_FtreeSpec, ( ml_ftree_t* tree, > + ml_select_e crit, > + int limit, > + char* sort ) ); > + > +/** > + * @brief This function gives quick sequential adding capability > + * @param left Tree to add to. This may be NULL > + * @param right Tree to append. May not be NULL > + * @return Pointer to new tree.*/ > +static inline ml_ftree_t* ml_FtreeFastAnd( ml_ftree_t* left, > + ml_ftree_t* right ) > +{ > + if( ml_FtreeHasOp( left ) == 0 ) > + { > + return ml_OpConnectChilds( ML_OP_NONE, left, right ); > + } > + else > + { > + return ml_OpConnectChilds( ML_OP_AND, left, right ); > + } > +} > +#define ml_FtreeAnd( left, right ) ml_OpConnectChilds( ML_OP_AND, left, right ) > +#define ml_FtreeOr( left, right ) ml_OpConnectChilds( ML_OP_OR, left, right ) > +#define ml_FtreeNot( left ) ml_OpConnectChilds( ML_OP_NOT, left, NULL ) > + > +#define ml_FtreeSpecAsc( tree, str ) __ml_FtreeSpec( tree, ML_SORT_ASC, 0, str ) > +#define ml_FtreeSpecDesc( tree, str ) __ml_FtreeSpec( tree, ML_SORT_DESC, 0, str ) > +#define ml_FtreeSpecLimit( tree, limit ) __ml_FtreeSpec( tree, ML_LIMIT, limit, NULL ) > +#define ml_FtreeSpecDistinct( tree ) __ml_FtreeSpec( tree, ML_DISTINCT, 0, NULL ) > + > + > +/***************************************************************************** > + * ML Core Functions > + *****************************************************************************/ > + > +/** > + * @brief Create input item from media > + * @param p_media_library This ML instance. > + * @param i_media_id ID of the media to use to create an input_item. > + * @return The media item. > + */ > +static inline input_item_t* ml_CreateInputItem( > + media_library_t *p_media_library, int i_media_id ) > +{ > + return p_media_library->functions.pf_InputItemFromMedia( p_media_library, > + i_media_id ); > +} > + > +/** > + * @brief Search in the database according some criterias > + * > + * @param p_media_library the media library object > + * @param result a pointer to a result array > + * @param ... parameters to select the data > + * @return VLC_SUCCESS or an error > + */ > +static inline int __ml_Find( media_library_t *p_media_library, > + vlc_array_t *p_result_array, ... ) > +{ > + va_list args; > + int returned; > + > + va_start( args, p_result_array ); > + returned = p_media_library->functions.pf_Find( p_media_library, > + p_result_array, args ); > + va_end( args ); > + > + return returned; > +} > + > + > +/** > + * @brief Search in the database according some criterias (threaded) > + * @param p_media_library the media library object > + * @param result_array a pointer to a result array > + * @param result_type type of data to retrieve > + * @param psz_lvalue This should contain any necessary lvalue/key > + * for the given result_type. Used for ML_PEOPLE. Otherwise NULL > + * @param args parameters to select the data > + * @return VLC_SUCCESS or an error > + */ > +static inline int ml_FindAdv( media_library_t *p_media_library, > + vlc_array_t *p_result_array, > + ml_select_e result_type, > + char* psz_lvalue, > + ml_ftree_t *tree ) > +{ > + return p_media_library->functions.pf_FindAdv( p_media_library, > + p_result_array, > + result_type, > + psz_lvalue, > + tree ); > +} > + > + > +/** > + * @brief Find a value in the ML database, fill p_result with it. > + * @param p_media_library Media library object > + * @param p_result Object to put result into > + * @param Args [ SelectType [ PersonType ] Value ] ... ML_END > + * @note Do not use this function directly. > + */ > +static inline int __ml_GetValue( media_library_t *p_media_library, > + ml_result_t *p_result, > + va_list args ) > +{ > + vlc_array_t *p_result_array = vlc_array_new(); > + int i_ret = p_media_library->functions.pf_Find( p_media_library, > + p_result_array, > + args ); > + if( i_ret != VLC_SUCCESS ) > + goto exit; > + if( vlc_array_count( p_result_array ) > 0 ) > + memcpy( p_result, > + ( ml_result_t* ) vlc_array_item_at_index( p_result_array, 0 ), > + sizeof( ml_result_t) ); > + else > + i_ret = VLC_EGENERIC; > + > +exit: > + /* Note: Do not free the results, because of memcpy */ > + vlc_array_destroy( p_result_array ); > + return i_ret; > +} > + > +/** > + * @brief Search an INTEGER in the database > + * This uses a Query but returns only one integer (>0), or an error code. > + * > + * @param p_media_library the media library object > + * @param va_args parameters to select the data > + * @return Found INTEGER >= 0 or an error > + */ > +#define ml_GetInt( ml, ... ) __ml_GetInt( ml, __VA_ARGS__, ML_LIMIT, 1, ML_END ) > +static inline int __ml_GetInt( media_library_t *p_media_library, ... ) > +{ > + va_list args; > + va_start( args, p_media_library ); > + ml_result_t result; > + int i_ret = __ml_GetValue( p_media_library, &result, args ); > + va_end( args ); > + if( i_ret != VLC_SUCCESS ) > + return i_ret; > + else > + return result.value.i; > +} > + > + > +/** > + * @brief Search a string (VARCHAR) in the database > + * This uses a Query but returns only one integer (>0), or an error code. > + * > + * @param p_media_library the media library object > + * @param va_args parameters to select the data > + * @return Found string, or NULL if not found or in case of error > + */ > +#define ml_FindPsz( ml, ... ) __ml_GetPsz( ml, __VA_ARGS__, ML_LIMIT, 1, ML_END ) > +static inline char* __ml_GetPsz( media_library_t *p_media_library, ... ) > +{ > + va_list args; > + va_start( args, p_media_library ); > + ml_result_t result; > + int i_ret = __ml_GetValue( p_media_library, &result, args ); > + va_end( args ); > + if( i_ret != VLC_SUCCESS ) > + return NULL; > + else > + return result.value.psz; // no need to duplicate > +} > + > +/** > + * @brief Generic update in Media Library database > + * > + * @param p_media_library the media library object > + * @param selected_type the type of the element we're selecting > + * @param where list of ids/uris to be changed > + * @param changes list of changes to make in the entries > + * @return VLC_SUCCESS or VLC_EGENERIC > + */ > +static inline int ml_Update( media_library_t *p_media_library, > + ml_select_e selected_type, > + const char* psz_lvalue, > + ml_ftree_t *where, > + vlc_array_t *changes ) > +{ > + return p_media_library->functions.pf_Update( p_media_library, > + selected_type, psz_lvalue, > + where, changes ); > +} > + > +/** > + * @brief Update a given table > + * @param p_media_library The media library object > + * @param selected_type The table to update > + * @param psz_lvalue The role of the person if selected_type = ML_PEOPLE > + * @param id The id of the row to update > + * @param ... The update data. [SelectType [RoleType] Value] > + */ > +#define ml_UpdateSimple( ml, sel, lval, id, ... ) \ > + __ml_UpdateSimple( ml, sel, lval, id, __VA_ARGS__, ML_END ) > +VLC_EXPORT( int, __ml_UpdateSimple, ( media_library_t *p_media_library, > + ml_select_e selected_type, > + const char* psz_lvalue, > + int id, ... ) ); > + > +/** > + * @brief Generic DELETE function > + * Delete a media and all its references which don't point > + * to anything else. > + * > + * @param p_media_library This media_library_t object > + * @param id the id of the media to delete > + * @return VLC_SUCCESS or VLC_EGENERIC > + */ > +static inline int > +ml_DeleteSimple( media_library_t *p_media_library, int id ) > +{ > + vlc_array_t* p_where = vlc_array_new(); > + ml_element_t* p_find = (ml_element_t *) calloc( 1, sizeof( ml_element_t ) ); > + p_find->criteria = ML_ID; > + p_find->value.i = id; > + vlc_array_append( p_where, p_find ); > + int i_return = p_media_library->functions.pf_Delete( p_media_library, > + p_where ); > + free( p_find ); > + vlc_array_destroy( p_where ); > + return i_return; > +} > + > +/** > + * @brief Delete many medias in the media library > + * @param p_media_library Media library object > + * @param p_array Array of ids to delete > + * @return VLC_SUCCESS or VLC_EGENERIC > + */ > +static inline int > +ml_Delete( media_library_t *p_media_library, vlc_array_t* p_array ) > +{ > + return p_media_library->functions.pf_Delete( p_media_library, > + p_array ); > +} > + > + > +/***************************************************************************** > + * ML Person Related Functions > + *****************************************************************************/ > + > +/** > + * @brief Create and append a person object to the given list > + * @param pp_person pointer to person list. Set the address to null to create new list > + * @param i_role The role of the person > + * @param psz_name The name string. Will be strdup'd > + * @param i_id The id in the database > + * @note This function is NOT thread safe. Please lock any associated media > + */ > +static inline int ml_CreateAppendPersonAdv( ml_person_t **pp_person, > + const char* psz_role, const char* psz_name, int i_id ) > +{ > + assert( i_id || ( psz_name && *psz_name && psz_role && *psz_role ) ); > + if( !pp_person ) > + return VLC_EGENERIC; > + if( *pp_person != NULL ) > + return ml_CreateAppendPersonAdv( &((**pp_person).p_next), > + psz_role, psz_name, i_id); > + *pp_person = ( ml_person_t * ) calloc( 1, sizeof( ml_person_t ) ); > + (*pp_person)->psz_name = (psz_name && *psz_name) ? strdup( psz_name ): NULL; > + (*pp_person)->psz_role = (psz_role && *psz_role) ? strdup( psz_role ): NULL; > + (*pp_person)->i_id = i_id; > + (*pp_person)->p_next = NULL; > + return VLC_SUCCESS; > +} > + > +/** > + * @brief Create and append a person object to the given list > + * @param pp_person pointer to person list. > + * Set the address to NULL to create a new list > + * @param personfrom Person object to copy from > + * @note Ignores the next variable and copies only the variables. > + * Uses ml_CreateAppendPersonAdv > + * @note This function is NOT threadsafe > + */ > +static inline int ml_CreateAppendPerson( ml_person_t **pp_person, > + ml_person_t *p_personfrom ) > +{ > + return ml_CreateAppendPersonAdv( pp_person, > + p_personfrom->psz_role, > + p_personfrom->psz_name, > + p_personfrom->i_id ); > +} > + > +/** > + * @brief Copy one person list into another > + * @param a To list > + * @param b From list > + * @note On errors, you have to free any allocated persons yourself > + * @note This function is NOT threadsafe. Please ensure your medias are locked > + */ > +static inline int ml_CopyPersons( ml_person_t** a, ml_person_t* b ) > +{ > + int i_ret; > + while( b ) > + { > + i_ret = ml_CreateAppendPerson( a, b ); > + if( i_ret != VLC_SUCCESS ) > + return i_ret; > + b = b->p_next; > + } > + return VLC_SUCCESS; > +} > + > + > +/** > + * @brief Returns a person list of given type > + * @param p_ml The ML object > + * @param p_media The Media object > + * @param i_type The person type > + * @note This function is thread safe > + */ > +VLC_EXPORT( ml_person_t*, ml_GetPersonsFromMedia, ( media_library_t* p_ml, > + ml_media_t* p_media, > + const char *psz_role ) ); > + > + > +#define ml_GetAlbumArtistsFromMedia( a, b ) ml_GetPersonsFromMedia( a, b, ML_PERSON_ALBUM_ARTIST ); > +#define ml_GetArtistsFromMedia( a, b ) ml_GetPersonsFromMedia( a, b, ML_PERSON_ARTIST ); > +#define ml_GetEncodersFromMedia( a, b ) ml_GetPersonsFromMedia( a, b, ML_PERSON_ENCODER ); > +#define ml_GetPublishersFromMedia( a, b ) ml_GetPersonsFromMedia( a, b, ML_PERSON_PUBLISHER ); > + > +/** > + * @brief Delete a certain type of people from a media > + * @param p_media Media to delete from > + * @param i_type Type of person to delete > + * @note This function is threadsafe > + */ > +VLC_EXPORT( void, ml_DeletePersonTypeFromMedia, ( ml_media_t* p_media, > + const char *psz_role ) ); > + > + > +/** > + * @brief Creates and adds the playlist based on a given find tree > + * @param p_ml Media library object > + * @param p_tree Find tree to create SELECT > + */ > + > +VLC_EXPORT( void, ml_PlaySmartPlaylistBasedOn, ( media_library_t* p_ml, > + ml_ftree_t* p_tree ) ); > + > + > +/** > + * Convenience Macros > + */ > + > +/** > + * Get information using the *media* ID. This returns only 1 information. > + * @note You have to free the string returned (if that's a string!). > + */ > +#define ml_GetAlbumById( a, id ) ml_GetPsz( a, ML_ALBUM, ML_ID, id ) > +#define ml_GetArtistById( a, id ) ml_GetPsz( a, ML_PEOPLE, ML_PERSON_ARTIST, ML_ID, id ) > +#define ml_GetCoverUriById( a, id ) ml_GetPsz( a, ML_COVER, ML_ID, id ) > +#define ml_GetEncoderById( a, id ) ml_GetPsz( a, ML_PEOPLE, ML_PERSON_ENCODER, ML_ID, id ) > +#define ml_GetExtraById( a, id ) ml_GetPsz( a, ML_EXTRA, ML_ID, id ) > +#define ml_GetGenreById( a, id ) ml_GetPsz( a, ML_GENRE, ML_ID, id ) > +#define ml_GetOriginalTitleById( a, id ) ml_GetPsz( a, ML_ORIGINAL_TITLE, ML_ID, id ) > +#define ml_GetPublisherById( a, id ) ml_GetPsz( a, ML_PEOPLE, ML_PERSON_PUBLISHER, ML_ID, id ) > +#define ml_GetTitleById( a, id ) ml_GetPsz( a, ML_TITLE, ML_ID, id ) > +#define ml_GetUriById( a, id ) ml_GetPsz( a, ML_URI, ML_ID, id ) > + > +#define ml_GetAlbumIdById( a, id ) ml_GetInt( a, ML_ALBUM_ID, ML_ID, id ) > +#define ml_GetArtistIdById( a, id ) ml_GetInt( a, ML_PEOPLE_ID, ML_PERSON_ARTIST, ML_ID, id ) > +#define ml_GetDurationById( a, id ) ml_GetInt( a, ML_DURATION, ML_ID, id ) > +#define ml_GetEncoderIdById( a, id ) ml_GetInt( a, ML_PEOPLE_ID, ML_PERSON_ENCODER, ML_ID, id ) > +#define ml_GetLastPlayedById( a, id ) ml_GetInt( a, ML_LAST_PLAYED, ML_ID, id ) > +#define ml_GetPlayedCountById( a, id ) ml_GetInt( a, ML_PLAYED_COUNT, ML_ID, id ) > +#define ml_GetPublisherIdById( a, id ) ml_GetInt( a, ML_PEOPLE_ID, ML_PERSON_PUBLISHER, ML_ID, id ) > +#define ml_GetScoreById( a, id ) ml_GetInt( a, ML_SCORE, ML_ID, id ) > +#define ml_GetTrackNumberById( a, id ) ml_GetInt( a, ML_TRACK_NUMBER, ML_ID, id ) > +#define ml_GetTypeById( a, id ) ml_GetInt( a, ML_TYPE, ML_ID, id ) > +#define ml_GetYearById( a, id ) ml_GetInt( a, ML_YEAR, ML_ID, id ) > +#define ml_GetVoteById( a, id ) ml_GetInt( a, ML_VOTE, ML_ID, id ) > + > +/** Albums handling */ > +#define ml_GetAlbumId( a, b ) ml_GetInt( a, ML_ALBUM_ID, ML_ALBUM, b ) > + > +/** People handling */ > +#define ml_GetArtistId( a, b ) ml_GetInt( a, ML_PERSON_ID, ML_PERSON_ARTIST, ML_PERSON, ML_PERSON_ARTIST, b ) > +#define ml_GetEncoderId( a, b ) ml_GetInt( a, ML_PERSON_ID, ML_PERSON_ENCODER, ML_PERSON, ML_PERSON_ENCODER, b ) > +#define ml_GetPublisherId( a, b ) ml_GetInt( a, ML_PERSON_ID, ML_PERSON_PUBLISHER, ML_PERSON, ML_PERSON_PUBLISHER, b ) > + > +/** Counts handling */ > +#define ml_GetMediaCount( a, ... ) __ml_GetInt( a, ML_COUNT_MEDIA, __VA_ARGS__, ML_END ) > +#define ml_GetAlbumCount( a, ... ) __ml_GetInt( a, ML_COUNT_ALBUM, __VA_ARGS__, ML_END ) > +#define ml_GetPeopleCount( a, ... ) __ml_GetInt( a, ML_COUNT_PEOPLE, __VA_ARGS__, ML_END ) > + > +#define ml_Find( a, b, ... ) __ml_Find( a, b, __VA_ARGS__, ML_END ) > + > +#define ml_FindAlbum( a, b, ... ) __ml_Find( a, b, ML_ALBUM, __VA_ARGS__, ML_END ) > +#define ml_FindArtist( a, b, ... ) __ml_Find( a, b, ML_PERSON, ML_PERSON_ARTIST, __VA_ARGS__, ML_END ) > +#define ml_FindEncoder( a, b, ... ) __ml_Find( a, b, ML_PERSON, ML_PERSON_ENCODER, __VA_ARGS__, ML_END ) > +#define ml_FindGenre( a, b, ... ) __ml_Find( a, b, ML_GENRE, __VA_ARGS__, ML_END ) > +#define ml_FindMedia( a, b, ... ) __ml_Find( a, b, ML_MEDIA, __VA_ARGS__, ML_END ) > +#define ml_FindOriginalTitle( a, b, ... ) __ml_Find( a, b, ML_ORIGINAL_TITLE, __VA_ARGS__, ML_END ) > +#define ml_FindPublisher( a, b, ... ) __ml_Find( a, b, ML_PERSON, ML_PERSON_PUBLISHER, __VA_ARGS__, ML_END ) > +#define ml_FindTitle( a, b, ... ) __ml_Find( a, b, ML_TITLE, __VA_ARGS__, ML_END ) > +#define ml_FindType( a, b, ... ) __ml_Find( a, b, ML_TYPE, __VA_ARGS__, ML_END ) > +#define ml_FindUri( a, b, ... ) __ml_Find( a, b, ML_URI, __VA_ARGS__, ML_END ) > +#define ml_FindYear( a, b, ... ) __ml_Find( a, b, ML_YEAR, __VA_ARGS__, ML_END ) > + > +#define ml_FindAllAlbums( a, b ) ml_FindAlbum( a, b, ML_DISTINCT ) > +#define ml_FindAllArtists( a, b ) ml_FindArtist( a, b, ML_DISTINCT ) > +#define ml_FindAllGenres( a, b ) ml_FindGenre( a, b, ML_DISTINCT ) > +#define ml_FindAllMedias( a, b ) ml_FindMedia( a, b, ML_DISTINCT ) > +#define ml_FindAllOriginalTitles( a, b ) ml_FindOriginalTitle( a, b, ML_DISTINCT ) > +#define ml_FindAllPublishers( a, b, ... ) ml_FindPublisher( a, b, ML_DISTINCT ) > +#define ml_FindAllTitles( a, b ) ml_FindTitle( a, b, ML_DISTINCT ) > +#define ml_FindAllTypes( a, b ) ml_FindType( a, b, ML_DISTINCT ) > +#define ml_FindAllUris( a, b ) ml_FindUri( a, b, ML_DISTINCT ) > +#define ml_FindAllYears( a, b ) ml_FindYear( a, b, ML_DISTINCT ) > + > +#define ml_FindAlbumAdv( a, b, c ) ml_FindAdv( a, b, ML_ALBUM, NULL, c ) > +#define ml_FindArtistAdv( a, b, c ) ml_FindAdv( a, b, ML_PERSON, ML_PERSON_ARTIST, c ) > +#define ml_FindEncoderAdv( a, b, c ) ml_FindAdv( a, b, ML_PERSON, ML_PERSON_ENCODER, c ) > +#define ml_FindGenreAdv( a, b, c ) ml_FindAdv( a, b, ML_GENRE, NULL, c ) > +#define ml_FindMediaAdv( a, b, c ) ml_FindAdv( a, b, ML_MEDIA, NULL, c ) > +#define ml_FindOriginalTitleAdv( a, b, c ) ml_FindAdv( a, b, ML_ORIGINAL_TITLE,NULL, c ) > +#define ml_FindPublisherAdv( a, b, c ) ml_FindAdv( a, b, ML_PUBLISHER, ML_PERSON_PUBLISHER, c ) > +#define ml_FindTitleAdv( a, b, c ) ml_FindAdv( a, b, ML_TITLE, NULL, c ) > +#define ml_FindTypeAdv( a, b, c ) ml_FindAdv( a, b, ML_TYPE, NULL, c ) > +#define ml_FindUriAdv( a, b, c ) ml_FindAdv( a, b, ML_URI, NULL, c ) > +#define ml_FindYearAdv( a, b, c ) ml_FindAdv( a, b, ML_YEAR, NULL, c ) Btw, are all thoses functions really needed by a ML users ? Aren't some of them private to the core ? If so, pleases move them there. Why are you using i_id ? With proper ref counting you should be able to not use it (playlist is a bad example, and it is plane to remove it). > +/** > + * @brief Create an instance of the media library > + * @param p_this Parent object > + * @param psz_name Name which is passed to module_need (not needed) > + * @return p_ml created and attached, module loaded. NULL if > + * not able to load > + */ > +media_library_t *__ml_Create( vlc_object_t *p_this, char *psz_name ) > +{ > + media_library_t *p_ml = NULL; Useless assignation. > + > + p_ml = ( media_library_t * ) vlc_custom_create( > + p_this, sizeof( media_library_t ), > + VLC_OBJECT_GENERIC, "media-library" ); > + if( !p_ml ) > + { > + msg_Err( p_this, "unable to create media library object" ); > + return NULL; > + } > + vlc_object_attach( p_ml, p_this ); > + > + p_ml->p_module = module_need( p_ml, "media-library", psz_name, false ); > + if( !p_ml->p_module ) > + { > + vlc_object_release( p_ml ); > + msg_Err( p_this, "Media Library provider not found" ); > + return NULL; > + } > + > + return p_ml; > +} > +/** > + * @brief Acquire a reference to the media library singleton > + * @param p_this Object that holds the reference > + * @return media_library_t The ml object. NULL if not compiled with > + * media library or if unable to load > + */ > +media_library_t* __ml_Hold( vlc_object_t* p_this ) > +{ > + media_library_t* p_ml = NULL; Same (apply to other cases). > + p_ml = libvlc_priv (p_this->p_libvlc)->p_ml; > + assert( VLC_OBJECT( p_ml ) != p_this ); > + if( p_ml == NULL && > + var_GetBool( p_this->p_libvlc, "load-media-library-on-startup" ) == false ) No == false or true or ... > + { > + libvlc_priv (p_this->p_libvlc)->p_ml > + = __ml_Create( VLC_OBJECT( p_this->p_libvlc ), NULL ); > + p_ml = libvlc_priv (p_this->p_libvlc)->p_ml; > + } I don't see how that can be thread safe. > + if( p_ml ) > + vlc_object_hold( p_ml ); > + return p_ml; > +} > + > +/** > + * @brief Release a reference to the media library singleton > + * @param p_this Object that holds the reference > + */ > +void __ml_Release( vlc_object_t* p_this ) > +{ > + media_library_t* p_ml; > + p_ml = libvlc_priv (p_this->p_libvlc)->p_ml; > + if( p_ml == NULL ) > + { > + msg_Warn( p_this->p_libvlc , "Spurious release ML called"); > + return; > + } > + assert( VLC_OBJECT( p_ml ) != p_this ); > + vlc_object_release( p_ml ); > +} Wouldn't it be simpler and better to handle it as the playlist do ? ie a single ml_Get() function. > +/** > + * @brief Object constructor for ml_media_t > + * @param p_ml The media library object > + * @param id If 0, this item isn't in database. If non zero, it is and > + * it will be a singleton > + * @param select Type of object > + * @param reload Whether to reload from database > + */ > +ml_media_t* media_New( media_library_t* p_ml, int id, > + ml_select_e select, bool reload ) > +{ > + if( id == 0 ) > + { > + ml_media_t* p_media = NULL; > + p_media = ( ml_media_t* )calloc( 1, sizeof( ml_media_t ) ); > + ml_gc_init( &p_media->ml_gc_data, media_Destroy ); > + vlc_mutex_init( &p_media->lock ); > + return p_media; > + } > + else > + return p_ml->functions.pf_GetMedia( p_ml, id, select, reload ); > +} > + > +/** > + * @brief Update a given table > + * @param p_media_library The media library object > + * @param selected_type The table to update > + * @param psz_lvalue The role of the person if selected_type = ML_PEOPLE > + * @param id The id of the row to update > + * @param ... The update data. [SelectType [RoleType] Value] ... ML_END > + */ > +int __ml_UpdateSimple( media_library_t *p_media_library, > + ml_select_e selected_type, > + const char* psz_lvalue, > + int id, ... ) > +{ > + ml_element_t *update = NULL; > + vlc_array_t *array = vlc_array_new(); > + int i_ret = VLC_SUCCESS; > + > + va_list args; > + va_start( args, id ); > + > + ml_select_e sel; > + do { > + update = ( ml_element_t* ) calloc( 1, sizeof( ml_element_t ) ); > + sel = ( ml_select_e ) va_arg( args, int ); > + update->criteria = sel; > + if( sel == ML_PEOPLE ) > + { > + update->lvalue.str = va_arg( args, char* ); > + update->value.str = va_arg( args, char* ); > + vlc_array_append( array, update ); > + } > + else if( sel == ML_PEOPLE_ID ) > + { > + update->lvalue.str = va_arg( args, char* ); > + update->value.i = va_arg( args, int ); > + vlc_array_append( array, update ); > + } > + else if( sel == ML_PEOPLE_ROLE ) > + { > +#ifndef NDEBUG > + msg_Dbg( p_media_library, > + "this argument is invalid for Update: %d", > + (int)sel ); > +#endif > + } > + else > + { > + switch( ml_AttributeIsString( sel ) ) > + { > + case -1: > + if( sel != ML_END ) > + { > +#ifndef NDEBUG > + msg_Dbg( p_media_library, > + "this argument is invalid for Update: %d", > + (int)sel ); > +#endif > + i_ret = VLC_EGENERIC; > + } > + else if( sel == ML_END ) > + vlc_array_append( array, update ); > + break; > + case 0: > + update->value.str = va_arg( args, char* ); > + vlc_array_append( array, update ); > + break; > + case 1: > + update->value.i = va_arg( args, int ); > + vlc_array_append( array, update ); > + break; > + } > + } > + } while( sel != ML_END ); > + > + va_end( args ); > + > + ml_ftree_t* p_where = NULL; > + ml_ftree_t* find = ( ml_ftree_t* ) calloc( 1, sizeof( ml_ftree_t ) ); > + find->criteria = ML_ID; > + find->value.i = id ; > + find->comp = ML_COMP_EQUAL; > + p_where = ml_FtreeFastAnd( p_where, find ); > + > + /* Let's update the database ! */ > + if( i_ret == VLC_SUCCESS ) > + i_ret = ml_Update( p_media_library, selected_type, psz_lvalue, > + p_where, array ); > + > + /* Destroying array */ > + for( int i = 0; i < vlc_array_count( array ); i++ ) > + { > + free( vlc_array_item_at_index( array, i ) ); > + } > + vlc_array_destroy( array ); > + ml_FreeFindTree( p_where ); > + > + return i_ret; > +} > + > +/** > + * @brief Connect up a find tree > + * @param op operator to connect with > + * If op = ML_OP_NONE, then you are connecting to a tree consisting of > + * only SPECIAL nodes. > + * If op = ML_OP_NOT, then right MUST be NULL > + * op must not be ML_OP_SPECIAL, @see __ml_FtreeSpec > + * @param left part of the tree > + * @param right part of the tree > + * @return Pointer to new tree > + * @note Use the helpers! > + */ > +ml_ftree_t* ml_OpConnectChilds( ml_op_e op, ml_ftree_t* left, > + ml_ftree_t* right ) > +{ > + /* Use this Op for fresh trees (with only special nodes/none at all!) */ > + if( op == ML_OP_NONE ) > + { > + assert( ml_FtreeHasOp( left ) == 0 ); > + if( left == NULL ) > + return right; > + /* Percolate down tree only for special nodes */ > + assert( left->op == ML_OP_SPECIAL ); > + if( left->left == NULL ) > + { > + left->left = right; > + return left; > + } > + else > + { > + return ml_OpConnectChilds( ML_OP_NONE, left->left, right ); > + } > + } > + else if( op == ML_OP_NOT ) > + { > + assert( right == NULL && left != NULL ); > + assert( ml_FtreeHasOp( left ) > 0 ); > + } > + else if( op == ML_OP_SPECIAL ) > + { > + assert( 0 ); > + } > + else > + { > + assert( right != NULL && left != NULL ); > + assert( ml_FtreeHasOp( left ) > 0 ); > + assert( ml_FtreeHasOp( right ) > 0 ); > + } > + ml_ftree_t* p_parent = (ml_ftree_t *) calloc( 1, sizeof( ml_ftree_t ) ); > + p_parent->op = op; > + p_parent->left = left; > + p_parent->right = right; > + return p_parent; > +} > + > +/** > + * @brief Attaches a special node to a tree > + * @param tree Tree to attach special node to > + * @param crit Criteria may be SORT_ASC, SORT_DESC, LIMIT or DISTINCT > + * @param limit Limit used if LIMIT criteria used > + * @param Sort string used if SORT criteria is used > + * @return Pointer to new tree > + * @note Use the helpers > + */ > +ml_ftree_t* __ml_FtreeSpec( ml_ftree_t* tree, > + ml_select_e crit, > + int limit, > + char* sort ) > +{ > + assert( crit == ML_SORT_ASC || crit == ML_LIMIT || crit == ML_SORT_DESC || > + crit == ML_DISTINCT ); > + ml_ftree_t* right = ( ml_ftree_t* ) calloc( 1, sizeof( ml_ftree_t ) ); > + right->criteria = crit; > + if( crit == ML_LIMIT ) > + right->value.i = limit; > + else if( crit == ML_SORT_ASC || crit == ML_SORT_DESC ) > + right->value.str = strdup( sort ); > + right->op = ML_OP_NONE; > + ml_ftree_t* p_parent = ( ml_ftree_t* ) calloc( 1, sizeof( ml_ftree_t ) ); > + p_parent->right = right; > + p_parent->op = ML_OP_SPECIAL; > + p_parent->left = tree; > + return p_parent; > +} > + > + > +/** > + * @brief Creates and adds the playlist based on a given find tree > + * @param p_ml Media library object > + * @param p_tree Find tree to create SELECT > + */ > +void ml_PlaySmartPlaylistBasedOn( media_library_t* p_ml, > + ml_ftree_t* p_tree ) > +{ > + assert( p_tree ); > + vlc_array_t* p_results = vlc_array_new(); > + ml_FindAdv( p_ml, p_results, ML_ID, NULL, p_tree ); > + playlist_t* p_pl = pl_Hold( p_ml ); > + playlist_Lock( p_pl ); > + playlist_Clear( p_pl, true ); > + for( int i = 0; i < vlc_array_count( p_results ); i++ ) > + { > + ml_result_t* p_res = ( ml_result_t* ) vlc_array_item_at_index( p_results, i ); > + input_item_t* p_item; > + if( p_res ) > + { > + p_item = ml_CreateInputItem( p_ml, p_res->value.i ); > + playlist_AddInput( p_pl, p_item, PLAYLIST_APPEND, > + PLAYLIST_END, true, true ); > + } > + } > + playlist_Unlock( p_pl ); > + ml_DestroyResultArray( p_results ); > + vlc_array_destroy( p_results ); > +} > + > +/** > + * @brief Returns a person list of given type > + * @param p_ml The ML object > + * @param p_media The Media object > + * @param i_type The person type > + * @note This function is thread safe > + */ > +ml_person_t* ml_GetPersonsFromMedia( media_library_t* p_ml, > + ml_media_t* p_media, > + const char *psz_role ) > +{ > + VLC_UNUSED( p_ml ); > + assert( p_media != NULL ); > + ml_person_t* p_return = NULL; > + ml_LockMedia( p_media ); > + ml_person_t* p_person = p_media->p_people; > + while( p_person ) > + { > + if( strcmp( p_person->psz_role, psz_role ) == 0 ) > + { > + int i_ret = ml_CreateAppendPerson( &p_return, p_person ); > + if( i_ret != VLC_SUCCESS ) > + { > + ml_UnlockMedia( p_media ); > + ml_FreePeople( p_return ); > + return NULL; > + } > + } > + p_person = p_person->p_next; > + } > + ml_UnlockMedia( p_media ); > + //TODO: Fill up empty names + clean up list > + return p_return; > +} > + > +/** > + * @brief Delete a certain type of people from a media > + * @param p_media Media to delete from > + * @param i_type Type of person to delete > + * @note This function is threadsafe > + */ > +void ml_DeletePersonTypeFromMedia( ml_media_t* p_media, const char *psz_role ) > +{ > + assert( p_media ); > + ml_LockMedia( p_media ); > + ml_person_t* p_prev = NULL; > + ml_person_t* p_person = p_media->p_people; > + > + while( p_person ) > + { > + if( strcmp( p_person->psz_role, psz_role ) == 0 ) > + { > + if( p_prev == NULL ) > + { > + p_media->p_people = p_person->p_next; > + p_person->p_next = NULL; > + ml_FreePeople( p_person ); > + p_person = p_media->p_people; > + } > + else > + { > + p_prev->p_next = p_person->p_next; > + p_person->p_next = NULL; > + ml_FreePeople( p_person ); > + p_person = p_prev->p_next; > + } > + } > + else > + { > + p_prev = p_person; > + p_person = p_person->p_next; > + } > + } > + ml_UnlockMedia( p_media ); > +} > + > +#endif /* MEDIA_LIBRARY */ > diff --git a/src/missing.c b/src/missing.c > index b96f911..46e1259 100644 > --- a/src/missing.c > +++ b/src/missing.c > @@ -395,3 +395,60 @@ vlm_t *vlm_New (vlc_object_t *obj) > return NULL; > } > #endif /* !ENABLE_VLM */ > + > +#ifndef MEDIA_LIBRARY > +#include > + > +media_library_t* __ml_Hold ( vlc_object_t* p_this ) > +{ > + return NULL; > +} > + > +void __ml_Release ( vlc_object_t* p_this ) > +{ > + assert( 0 ); > +} > + > +media_library_t* __ml_Create ( vlc_object_t *p_this, char* psz_name ) > +{ > + return NULL; > +} > + > +void __ml_Destroy( vlc_object_t * p_this ) > +{ > + assert( 0 ); > +} > + > +ml_media_t* media_New( media_library_t* p_ml, int id, ml_select_e select, bool reload ) > +{ > + assert( 0 ); > +} > + > +int __ml_UpdateSimple( media_library_t *p_media_library, ml_select_e selected_type, > + const char* psz_lvalue, int id, ... ) > +{ > + assert( 0 ); > +} > + > +ml_ftree_t* ml_OpConnectChilds( ml_op_e op, ml_ftree_t* left, ml_ftree_t* right ) > +{ > + assert( 0 ); > +} > + > +ml_ftree_t* __ml_FtreeSpec( ml_ftree_t* tree, ml_select_e crit, int limit, > + char* sort ) > +{ > + assert( 0 ); > +} > + > +void ml_PlaySmartPlaylistBasedOn( media_library_t* p_ml, > + ml_ftree_t* p_tree ) > +{ > + assert( 0 ); > +} > + > +void ml_DeletePersonTypeFromMedia( ml_media_t* p_media, const char *psz_role ) > +{ > + assert( 0 ); > +} > +#endif /* !MEDIA_LIBRARY */ Regards, -- fenrir From rem at videolan.org Sun Jun 27 03:42:10 2010 From: rem at videolan.org (=?iso-8859-15?q?R=E9mi?= Denis-Courmont) Date: Sun, 27 Jun 2010 04:42:10 +0300 Subject: [vlc-devel] [PATCH] Disable faad, lower priority of decoder below avcodec In-Reply-To: <20100625214246.01ffcbed@kru> References: <1277493903-6356-1-git-send-email-rafael.carre@gmail.com> <636e0e5461096dd70ad1d9db536934ab@chewa.net> <20100625214246.01ffcbed@kru> Message-ID: <201006270442.10686.rem@videolan.org> On Friday 25 June 2010 22:42:46 Rafa?l Carr?, you wrote: > On Fri, 25 Jun 2010 21:29:01 +0200 > > R?mi Denis-Courmont wrote: > > To me, it sounds like we should remove the plugin completely instead > > I was removing faad from extras/contrib/src/Distributions/* and I > noticed maemo.mak says: > "#.faad -> way slower than libavcodec" > > Did you try a fixed point build for faad? No. > afaics ffmpeg decoder is float only so perhaps it makes sense to keep > faad for targets without FPU N900 has a hardware FPU, as far as I know, though it is not as fast as the ALU(s). -- R?mi Denis-Courmont From robert at prog.olsztyn.pl Sun Jun 27 01:27:10 2010 From: robert at prog.olsztyn.pl (=?UTF-8?B?Um9iZXJ0IErEmWRyemVqY3p5aw==?=) Date: Sun, 27 Jun 2010 01:27:10 +0200 Subject: [vlc-devel] [VLC] #3812: libvlc_video_set_scale(p_mi, f_factor) Message-ID: <9c5e71c3c803d3e251076f88fe6a4492.qmail@home.pl> Hello, sorry for the confusion I do it now. Dnia 2010-06-26 20:11 VLC napisa?(a): >#3812: libvlc_video_set_scale(p_mi, f_factor) >-------------------------------------+------------------------------------- - > Reporter: robert at prog.olsztyn.pl | Owner: courmisch > Type: defect | Status: new > Priority: normal | Milestone: Bugs paradize > Component: LibVLC | Version: master > Severity: normal | Resolution: > Keywords: | Platform: all >Difficulty: unknown | Wip: Started >-------------------------------------+------------------------------------- - > >Comment(by jb): > > Please send a patch to vlc-devel at videolan.org as in > http://wiki.videolan.org/Git > >-- >Ticket URL: >VLC >VLC media player > -- Pozdrawiam Robert J?drzejczyk From robert at prog.olsztyn.pl Sun Jun 27 01:46:41 2010 From: robert at prog.olsztyn.pl (=?UTF-8?B?Um9iZXJ0IErEmWRyemVqY3p5aw==?=) Date: Sun, 27 Jun 2010 01:46:41 +0200 Subject: [vlc-devel] [PATCH] BUG in funcion libvlc_vide_set_scale. Message-ID: <47bcbf41561034ba4cda86c04473ae2d.qmail@home.pl> Very sory, but i can not send e-mail via git -------------- next part -------------- A non-text attachment was scrubbed... Name: 0001-BUG-in-funcion-libvlc_vide_set_scale.patch Type: application/octet-stream Size: 1159 bytes Desc: not available URL: From logiconcepts819 at gmail.com Sun Jun 27 08:58:34 2010 From: logiconcepts819 at gmail.com (Ron Wright) Date: Sun, 27 Jun 2010 01:58:34 -0500 Subject: [vlc-devel] Dynamic range compressor patch In-Reply-To: <20100626195158.GA2342@elivagar.org> References: <201006220353.57723.rem@videolan.org> <20100624190542.GA21497@elivagar.org> <20100626195158.GA2342@elivagar.org> Message-ID: Hello again, I have updated the patches again as usual, and added a third patch that includes the compressor module to be linked against the math library. Moreover, I have modified the compressor code so as to add latency compensation for RMS compression, also known as "lookahead." However, this comes at a cost. The cost is a delay at the output that is inversely proportional to the sample rate. If any of you folks can think of a better way of implementing this lookahead mechanism, let me know. Regards, Ronald Wright On Sat, Jun 26, 2010 at 2:51 PM, Laurent Aimar wrote: > On Fri, Jun 25, 2010 at 03:39:30PM -0500, Ron Wright wrote: > > Hello, > > > > I have made many drastic changes in the compressor.c file and some minor > > changes in the UI code. Here are some of the changes: > > > > 1. Added VLC copyright and $id$ tag to the banner. > > 2. Made the filter structure, RMS envelope structure, and attack lookup > table > > contiguous in memory so that only one memory allocation and one memory > > deallocation is needed. > > 3. Reorganized the functions so that they don't appear out of place. > > 4. Removed two wasteful members (amplitude and gain reduction) from the > filter > > structure (this is probably used to implement output meters in certain > LADSPA > > frontends). > > 5. The release of the mutex lock in the DoWork function now occurs > immediately > > after retrieving the shared values. > > 6. Replaced the logic in the callback functions with clipping functions. > > 7. Removed useless casts. > > 8. Changed default values. > > > > Here are some notes to take into consideration: > > > > 1. The f_max and f_clamp functions work as expected. Proof: > > > > f_max (with arguments x and a): > > > > If x < a, then 0.5 * ((x - a) + fabs(x - a)) + a = 0.5 * ((x - a) - (x - > a)) + > > a = a > > If x >= a, then 0.5 * ((x - a) + fabs(x - a)) + a = 0.5 * ((x - a) + (x - > a)) + > > a = 0.5*2*(x - a) + a = x > > > > f_clamp (with arguments x, a, and b): > > > > If x < a, then 0.5 * (fabs(x - a) + a + b - fabs(x - b)) = 0.5 * (-(x - > a) + a > > + b + (x - b)) = 0.5 * (2*a - x + b + x - b) = a > > If a <= x < b, then 0.5 * (fabs(x - a) + a + b - fabs(x - b)) = 0.5 * ((x > - a) > > + a + b + (x - b)) = 0.5 * (x + b + x - b) = x > > If x >= b, then 0.5 * (fabs(x - a) + a + b - fabs(x - b)) = 0.5 * ((x - > a) + a > > + b - (x - b)) = 0.5 * (x + b - x + b) = b > > > > These are branchless clipping functions from Laurent de Soras. > > > > 2. A buffer overflow will not occur when either attack or release > converted to > > seconds is multiplied by (A_TBL - 1), with the resulting value used as an > index > > to retrieve the attack (or release) value from the lookup table. The > maximum > > of the maximum values of attack and release is 800, and A_TBL is 256, so > 800 * > > 0.001 * 255 = 204. This means that the index will neither go beyond 255 > nor > > even reach 255. The minimum of the minimum values of attack and release > is > > 1.5. However, the real minimum value used in the code is 2. > Nevertheless, > > there will also be no buffer underflow, since this value is positive. > Thanks, > > > > diff --git a/modules/audio_filter/Modules.am > b/modules/audio_filter/Modules.am > > index eae73fc..7767cbe 100644 > > --- a/modules/audio_filter/Modules.am > > +++ b/modules/audio_filter/Modules.am > > @@ -1,5 +1,6 @@ > > SUBDIRS = channel_mixer converter resampler spatializer > > SOURCES_equalizer = equalizer.c equalizer_presets.h > > +SOURCES_compressor = compressor.c > > SOURCES_normvol = normvol.c > > SOURCES_audiobargraph_a = audiobargraph_a.c > > SOURCES_param_eq = param_eq.c > > @@ -9,6 +10,7 @@ SOURCES_chorus_flanger = chorus_flanger.c > > libvlc_LTLIBRARIES += \ > > libaudiobargraph_a_plugin.la \ > > libchorus_flanger_plugin.la \ > > + libcompressor_plugin.la \ > > libequalizer_plugin.la \ > > libnormvol_plugin.la \ > > libparam_eq_plugin.la \ > I am not sure, but seeing that you use mathematics functions, I think you > also > need to modify configure.ac to link with -lm. > > > diff --git a/modules/audio_filter/compressor.c > b/modules/audio_filter/compressor.c > > new file mode 100644 > > index 0000000..daa260a > > --- /dev/null > > +++ b/modules/audio_filter/compressor.c > > @@ -0,0 +1,683 @@ > > > +/***************************************************************************** > > + * compressor.c: dynamic range compressor, ported from SC4 plugin > > + > ***************************************************************************** > > + * Copyright (C) 2010 the VideoLAN team > Please use your name instead of 'the VideoLAN team' (as the code is > ported, dunno > if the original copyright shouldn't be used too). > > > +#define A_TBL (256) > > + > > +#define DB_TABLE_SIZE (1024) > > +#define DB_MIN (-60.0f) > > +#define DB_MAX (24.0f) > > +#define LIN_TABLE_SIZE (1024) > > +#define LIN_MIN (0.0000000002f) > > +#define LIN_MAX (9.0f) > > +#define DB_DEFAULT_CUBE > > +#define RMS_BUF_SIZE (64) > > + > > +#define LIN_INTERP(f,a,b) ((a) + (f) * ( (b) - (a) )) > > + > > +typedef struct > > +{ > > + float buffer[RMS_BUF_SIZE]; > > + unsigned int pos; > > + float sum; > > + > > +} rms_env; > > + > > +struct filter_sys_t > > +{ > > + float rms_peak; > > + float attack; > > + float release; > > + float threshold; > > + float ratio; > > + float knee; > > + float makeup_gain; > > + > > + float amp; > > + float *as; > > + unsigned int count; > > + float env; > > + float env_peak; > > + float env_rms; > > + float gain; > > + float gain_thres; > > + rms_env* rms; > > + float sum; > > + > > + float db_data[DB_TABLE_SIZE]; > > + float lin_data[LIN_TABLE_SIZE]; > > + > > + vlc_mutex_t lock; > > +}; > I meant to use directly > > rms_env rms; > float as[A_TBL]. > > to simplify the allocation. > > Also, if you could move the variables protected by the lock below the > declaration of the lock, it would make it easier to maintain. > > > > +/***************************************************************************** > > + * Open: initialize interface > > + > *****************************************************************************/ > > + > > +static int Open( vlc_object_t *p_this ) > > +{ > > + filter_t *p_filter = (filter_t*)p_this; > > + vlc_object_t *p_aout = p_filter->p_parent; > > + float sample_rate = p_filter->fmt_in.audio.i_rate; > > + struct filter_sys_t *p_sys; > > + unsigned int i; > > + > > + if( p_filter->fmt_in.audio.i_format != VLC_CODEC_FL32 || > > + p_filter->fmt_out.audio.i_format != VLC_CODEC_FL32 ) > > + { > > + p_filter->fmt_in.audio.i_format = VLC_CODEC_FL32; > > + p_filter->fmt_out.audio.i_format = VLC_CODEC_FL32; > > + msg_Warn( p_filter, "bad input or output format" ); > > + return VLC_EGENERIC; > > + } > > + if( !AOUT_FMTS_SIMILAR( &p_filter->fmt_in.audio, > > + &p_filter->fmt_out.audio ) ) > > + { > > + memcpy( &p_filter->fmt_out.audio, &p_filter->fmt_in.audio, > > + sizeof(audio_sample_format_t) ); > p_filter->fmt_out.audio = p_filter->fmt_in.audio; > is simpler. > > > + msg_Warn( p_filter, "input and output formats are not similar" > ); > > + return VLC_EGENERIC; > > + } > > + > > + p_sys = p_filter->p_sys = calloc( 1, sizeof(struct filter_sys_t) > > + + sizeof(rms_env) > > + + A_TBL * sizeof(float) ); > > + if( !p_sys ) > > + { > > + return VLC_ENOMEM; > > + } > > + p_sys->rms = (rms_env*)( p_sys + 1 ); > > + p_sys->as = (float *)( p_sys->rms + 1 ); > See remarks above at filter_sys_t. > > > > +/***************************************************************************** > > + * Close: destroy interface > > + > *****************************************************************************/ > > + > > +static void Close( vlc_object_t *p_this ) > > +{ > > + filter_t *p_filter = (filter_t*)p_this; > > + vlc_object_t *p_aout = p_filter->p_parent; > > + struct filter_sys_t *p_sys = p_filter->p_sys; > > + > > + var_DelCallback( p_aout, "compressor-rms-peak", RMSPeakCallback, > p_sys ); > > + var_DelCallback( p_aout, "compressor-attack", AttackCallback, p_sys > ); > > + var_DelCallback( p_aout, "compressor-release", ReleaseCallback, > p_sys ); > > + var_DelCallback( p_aout, "compressor-threshold", ThresholdCallback, > p_sys ); > > + var_DelCallback( p_aout, "compressor-ratio", RatioCallback, p_sys ); > > + var_DelCallback( p_aout, "compressor-knee", KneeCallback, p_sys ); > > + var_DelCallback( p_aout, "compressor-makeup-gain", > MakeupGainCallback, > > + p_sys ); > > + > > + vlc_mutex_destroy( &p_sys->lock ); > > + > > + free( p_sys ); > > +} > > + > > > +/***************************************************************************** > > + * DoWork: process samples buffer > > + > *****************************************************************************/ > > + > > +static block_t * DoWork( filter_t * p_filter, block_t * p_in_buf ) > > +{ > > + int i_samples = p_in_buf->i_nb_samples; > > + int i_channels = aout_FormatNbChannels( &p_filter->fmt_in.audio ); > > + float *p_buf = (float*)p_in_buf->p_buffer; > > + > > + float rms_peak, attack, release, threshold, ratio, knee, > makeup_gain; > > + float amp, *as, env, env_peak, env_rms, gain, gain_thres, sum; > > + unsigned int count; > > + rms_env *rms; > > + > > + float ga, gr, rs, mug, knee_min, knee_max, ef_a, ef_ai; > > + > > + int pos, pos_chan; > > + > > + /* Current configuration */ > > + struct filter_sys_t *p_sys = p_filter->p_sys; > > + > > + vlc_mutex_lock( &p_sys->lock ); > > + > > + /* RMS/peak (float value) */ > > + rms_peak = p_sys->rms_peak; > > + > > + /* Attack time (ms) (float value) */ > > + attack = p_sys->attack; > > + > > + /* Release time (ms) (float value) */ > > + release = p_sys->release; > > + > > + /* Threshold level (dB) (float value) */ > > + threshold = p_sys->threshold; > > + > > + /* Ratio (n:1) (float value) */ > > + ratio = p_sys->ratio; > > + > > + /* Knee radius (dB) (float value) */ > > + knee = p_sys->knee; > > + > > + /* Makeup gain (dB) (float value) */ > > + makeup_gain = p_sys->makeup_gain; > > + > > + vlc_mutex_unlock( &p_sys->lock ); > > + > > + amp = p_sys->amp; > > + as = p_sys->as; > > + count = p_sys->count; > > + env = p_sys->env; > > + env_peak = p_sys->env_peak; > > + env_rms = p_sys->env_rms; > > + gain = p_sys->gain; > > + gain_thres = p_sys->gain_thres; > > + rms = p_sys->rms; > > + sum = p_sys->sum; > > + > > + ga = attack < 2.0f ? 0.0f > > + : as[f_round( attack * 0.001f * ( A_TBL - 1 ) )]; > > + gr = as[f_round( release * 0.001f * ( A_TBL - 1 ) )]; > > + rs = ( ratio - 1.0f ) / ratio; > > + mug = db2lin( makeup_gain, p_sys ); > > + knee_min = db2lin( threshold - knee, p_sys ); > > + knee_max = db2lin( threshold + knee, p_sys ); > > + ef_a = ga * 0.25f; > > + ef_ai = 1.0f - ef_a; > > + for( pos = 0; pos < i_samples; pos++ ) > If you want, you can also declare a variable inside code (we accept c99) > or in for() > statement. > > Regards, > > -- > fenrir > > _______________________________________________ > vlc-devel mailing list > To unsubscribe or modify your subscription options: > http://mailman.videolan.org/listinfo/vlc-devel > -------------- next part -------------- An HTML attachment was scrubbed... URL: -------------- next part -------------- A non-text attachment was scrubbed... Name: vlc-compressor-configure.patch Type: text/x-patch Size: 690 bytes Desc: not available URL: -------------- next part -------------- A non-text attachment was scrubbed... Name: vlc-compressor-core.patch Type: text/x-patch Size: 25003 bytes Desc: not available URL: -------------- next part -------------- A non-text attachment was scrubbed... Name: vlc-compressor-ui.patch Type: text/x-patch Size: 7903 bytes Desc: not available URL: From rem at videolan.org Sun Jun 27 16:07:11 2010 From: rem at videolan.org (=?utf-8?q?R=C3=A9mi?= Denis-Courmont) Date: Sun, 27 Jun 2010 17:07:11 +0300 Subject: [vlc-devel] [PATCH] BUG in funcion libvlc_vide_set_scale. In-Reply-To: <47bcbf41561034ba4cda86c04473ae2d.qmail@home.pl> References: <47bcbf41561034ba4cda86c04473ae2d.qmail@home.pl> Message-ID: <201006271707.11831.rem@videolan.org> On Sunday 27 June 2010 02:46:41 Robert J?drzejczyk, you wrote: > Very sory, but i can not send e-mail via git Patch is good and I merged it. However, it does not fix the crash. -- R?mi Denis-Courmont From logiconcepts819 at gmail.com Sun Jun 27 17:24:25 2010 From: logiconcepts819 at gmail.com (Ron Wright) Date: Sun, 27 Jun 2010 10:24:25 -0500 Subject: [vlc-devel] Dynamic range compressor patch In-Reply-To: References: <201006220353.57723.rem@videolan.org> <20100624190542.GA21497@elivagar.org> <20100626195158.GA2342@elivagar.org> Message-ID: I didn't like the delay in the attack and release settings for peak compression, so I have attached the updated compressor core patch that resolves the problem. Regards, Ronald Wright On Sun, Jun 27, 2010 at 1:58 AM, Ron Wright wrote: > Hello again, > > I have updated the patches again as usual, and added a third patch that > includes the compressor module to be linked against the math library. > Moreover, I have modified the compressor code so as to add latency > compensation for RMS compression, also known as "lookahead." However, this > comes at a cost. The cost is a delay at the output that is inversely > proportional to the sample rate. If any of you folks can think of a better > way of implementing this lookahead mechanism, let me know. > > Regards, > > Ronald Wright > > > On Sat, Jun 26, 2010 at 2:51 PM, Laurent Aimar wrote: > >> On Fri, Jun 25, 2010 at 03:39:30PM -0500, Ron Wright wrote: >> > Hello, >> > >> > I have made many drastic changes in the compressor.c file and some minor >> > changes in the UI code. Here are some of the changes: >> > >> > 1. Added VLC copyright and $id$ tag to the banner. >> > 2. Made the filter structure, RMS envelope structure, and attack lookup >> table >> > contiguous in memory so that only one memory allocation and one memory >> > deallocation is needed. >> > 3. Reorganized the functions so that they don't appear out of place. >> > 4. Removed two wasteful members (amplitude and gain reduction) from the >> filter >> > structure (this is probably used to implement output meters in certain >> LADSPA >> > frontends). >> > 5. The release of the mutex lock in the DoWork function now occurs >> immediately >> > after retrieving the shared values. >> > 6. Replaced the logic in the callback functions with clipping functions. >> > 7. Removed useless casts. >> > 8. Changed default values. >> > >> > Here are some notes to take into consideration: >> > >> > 1. The f_max and f_clamp functions work as expected. Proof: >> > >> > f_max (with arguments x and a): >> > >> > If x < a, then 0.5 * ((x - a) + fabs(x - a)) + a = 0.5 * ((x - a) - (x - >> a)) + >> > a = a >> > If x >= a, then 0.5 * ((x - a) + fabs(x - a)) + a = 0.5 * ((x - a) + (x >> - a)) + >> > a = 0.5*2*(x - a) + a = x >> > >> > f_clamp (with arguments x, a, and b): >> > >> > If x < a, then 0.5 * (fabs(x - a) + a + b - fabs(x - b)) = 0.5 * (-(x - >> a) + a >> > + b + (x - b)) = 0.5 * (2*a - x + b + x - b) = a >> > If a <= x < b, then 0.5 * (fabs(x - a) + a + b - fabs(x - b)) = 0.5 * >> ((x - a) >> > + a + b + (x - b)) = 0.5 * (x + b + x - b) = x >> > If x >= b, then 0.5 * (fabs(x - a) + a + b - fabs(x - b)) = 0.5 * ((x - >> a) + a >> > + b - (x - b)) = 0.5 * (x + b - x + b) = b >> > >> > These are branchless clipping functions from Laurent de Soras. >> > >> > 2. A buffer overflow will not occur when either attack or release >> converted to >> > seconds is multiplied by (A_TBL - 1), with the resulting value used as >> an index >> > to retrieve the attack (or release) value from the lookup table. The >> maximum >> > of the maximum values of attack and release is 800, and A_TBL is 256, so >> 800 * >> > 0.001 * 255 = 204. This means that the index will neither go beyond 255 >> nor >> > even reach 255. The minimum of the minimum values of attack and release >> is >> > 1.5. However, the real minimum value used in the code is 2. >> Nevertheless, >> > there will also be no buffer underflow, since this value is positive. >> Thanks, >> >> >> > diff --git a/modules/audio_filter/Modules.am >> b/modules/audio_filter/Modules.am >> > index eae73fc..7767cbe 100644 >> > --- a/modules/audio_filter/Modules.am >> > +++ b/modules/audio_filter/Modules.am >> > @@ -1,5 +1,6 @@ >> > SUBDIRS = channel_mixer converter resampler spatializer >> > SOURCES_equalizer = equalizer.c equalizer_presets.h >> > +SOURCES_compressor = compressor.c >> > SOURCES_normvol = normvol.c >> > SOURCES_audiobargraph_a = audiobargraph_a.c >> > SOURCES_param_eq = param_eq.c >> > @@ -9,6 +10,7 @@ SOURCES_chorus_flanger = chorus_flanger.c >> > libvlc_LTLIBRARIES += \ >> > libaudiobargraph_a_plugin.la \ >> > libchorus_flanger_plugin.la \ >> > + libcompressor_plugin.la \ >> > libequalizer_plugin.la \ >> > libnormvol_plugin.la \ >> > libparam_eq_plugin.la \ >> I am not sure, but seeing that you use mathematics functions, I think you >> also >> need to modify configure.ac to link with -lm. >> >> > diff --git a/modules/audio_filter/compressor.c >> b/modules/audio_filter/compressor.c >> > new file mode 100644 >> > index 0000000..daa260a >> > --- /dev/null >> > +++ b/modules/audio_filter/compressor.c >> > @@ -0,0 +1,683 @@ >> > >> +/***************************************************************************** >> > + * compressor.c: dynamic range compressor, ported from SC4 plugin >> > + >> ***************************************************************************** >> > + * Copyright (C) 2010 the VideoLAN team >> Please use your name instead of 'the VideoLAN team' (as the code is >> ported, dunno >> if the original copyright shouldn't be used too). >> >> > +#define A_TBL (256) >> > + >> > +#define DB_TABLE_SIZE (1024) >> > +#define DB_MIN (-60.0f) >> > +#define DB_MAX (24.0f) >> > +#define LIN_TABLE_SIZE (1024) >> > +#define LIN_MIN (0.0000000002f) >> > +#define LIN_MAX (9.0f) >> > +#define DB_DEFAULT_CUBE >> > +#define RMS_BUF_SIZE (64) >> > + >> > +#define LIN_INTERP(f,a,b) ((a) + (f) * ( (b) - (a) )) >> > + >> > +typedef struct >> > +{ >> > + float buffer[RMS_BUF_SIZE]; >> > + unsigned int pos; >> > + float sum; >> > + >> > +} rms_env; >> > + >> > +struct filter_sys_t >> > +{ >> > + float rms_peak; >> > + float attack; >> > + float release; >> > + float threshold; >> > + float ratio; >> > + float knee; >> > + float makeup_gain; >> > + >> > + float amp; >> > + float *as; >> > + unsigned int count; >> > + float env; >> > + float env_peak; >> > + float env_rms; >> > + float gain; >> > + float gain_thres; >> > + rms_env* rms; >> > + float sum; >> > + >> > + float db_data[DB_TABLE_SIZE]; >> > + float lin_data[LIN_TABLE_SIZE]; >> > + >> > + vlc_mutex_t lock; >> > +}; >> I meant to use directly >> >> rms_env rms; >> float as[A_TBL]. >> >> to simplify the allocation. >> >> Also, if you could move the variables protected by the lock below the >> declaration of the lock, it would make it easier to maintain. >> >> > >> +/***************************************************************************** >> > + * Open: initialize interface >> > + >> *****************************************************************************/ >> > + >> > +static int Open( vlc_object_t *p_this ) >> > +{ >> > + filter_t *p_filter = (filter_t*)p_this; >> > + vlc_object_t *p_aout = p_filter->p_parent; >> > + float sample_rate = p_filter->fmt_in.audio.i_rate; >> > + struct filter_sys_t *p_sys; >> > + unsigned int i; >> > + >> > + if( p_filter->fmt_in.audio.i_format != VLC_CODEC_FL32 || >> > + p_filter->fmt_out.audio.i_format != VLC_CODEC_FL32 ) >> > + { >> > + p_filter->fmt_in.audio.i_format = VLC_CODEC_FL32; >> > + p_filter->fmt_out.audio.i_format = VLC_CODEC_FL32; >> > + msg_Warn( p_filter, "bad input or output format" ); >> > + return VLC_EGENERIC; >> > + } >> > + if( !AOUT_FMTS_SIMILAR( &p_filter->fmt_in.audio, >> > + &p_filter->fmt_out.audio ) ) >> > + { >> > + memcpy( &p_filter->fmt_out.audio, &p_filter->fmt_in.audio, >> > + sizeof(audio_sample_format_t) ); >> p_filter->fmt_out.audio = p_filter->fmt_in.audio; >> is simpler. >> >> > + msg_Warn( p_filter, "input and output formats are not similar" >> ); >> > + return VLC_EGENERIC; >> > + } >> > + >> > + p_sys = p_filter->p_sys = calloc( 1, sizeof(struct filter_sys_t) >> > + + sizeof(rms_env) >> > + + A_TBL * sizeof(float) ); >> > + if( !p_sys ) >> > + { >> > + return VLC_ENOMEM; >> > + } >> > + p_sys->rms = (rms_env*)( p_sys + 1 ); >> > + p_sys->as = (float *)( p_sys->rms + 1 ); >> See remarks above at filter_sys_t. >> >> > >> +/***************************************************************************** >> > + * Close: destroy interface >> > + >> *****************************************************************************/ >> > + >> > +static void Close( vlc_object_t *p_this ) >> > +{ >> > + filter_t *p_filter = (filter_t*)p_this; >> > + vlc_object_t *p_aout = p_filter->p_parent; >> > + struct filter_sys_t *p_sys = p_filter->p_sys; >> > + >> > + var_DelCallback( p_aout, "compressor-rms-peak", RMSPeakCallback, >> p_sys ); >> > + var_DelCallback( p_aout, "compressor-attack", AttackCallback, p_sys >> ); >> > + var_DelCallback( p_aout, "compressor-release", ReleaseCallback, >> p_sys ); >> > + var_DelCallback( p_aout, "compressor-threshold", ThresholdCallback, >> p_sys ); >> > + var_DelCallback( p_aout, "compressor-ratio", RatioCallback, p_sys >> ); >> > + var_DelCallback( p_aout, "compressor-knee", KneeCallback, p_sys ); >> > + var_DelCallback( p_aout, "compressor-makeup-gain", >> MakeupGainCallback, >> > + p_sys ); >> > + >> > + vlc_mutex_destroy( &p_sys->lock ); >> > + >> > + free( p_sys ); >> > +} >> > + >> > >> +/***************************************************************************** >> > + * DoWork: process samples buffer >> > + >> *****************************************************************************/ >> > + >> > +static block_t * DoWork( filter_t * p_filter, block_t * p_in_buf ) >> > +{ >> > + int i_samples = p_in_buf->i_nb_samples; >> > + int i_channels = aout_FormatNbChannels( &p_filter->fmt_in.audio ); >> > + float *p_buf = (float*)p_in_buf->p_buffer; >> > + >> > + float rms_peak, attack, release, threshold, ratio, knee, >> makeup_gain; >> > + float amp, *as, env, env_peak, env_rms, gain, gain_thres, sum; >> > + unsigned int count; >> > + rms_env *rms; >> > + >> > + float ga, gr, rs, mug, knee_min, knee_max, ef_a, ef_ai; >> > + >> > + int pos, pos_chan; >> > + >> > + /* Current configuration */ >> > + struct filter_sys_t *p_sys = p_filter->p_sys; >> > + >> > + vlc_mutex_lock( &p_sys->lock ); >> > + >> > + /* RMS/peak (float value) */ >> > + rms_peak = p_sys->rms_peak; >> > + >> > + /* Attack time (ms) (float value) */ >> > + attack = p_sys->attack; >> > + >> > + /* Release time (ms) (float value) */ >> > + release = p_sys->release; >> > + >> > + /* Threshold level (dB) (float value) */ >> > + threshold = p_sys->threshold; >> > + >> > + /* Ratio (n:1) (float value) */ >> > + ratio = p_sys->ratio; >> > + >> > + /* Knee radius (dB) (float value) */ >> > + knee = p_sys->knee; >> > + >> > + /* Makeup gain (dB) (float value) */ >> > + makeup_gain = p_sys->makeup_gain; >> > + >> > + vlc_mutex_unlock( &p_sys->lock ); >> > + >> > + amp = p_sys->amp; >> > + as = p_sys->as; >> > + count = p_sys->count; >> > + env = p_sys->env; >> > + env_peak = p_sys->env_peak; >> > + env_rms = p_sys->env_rms; >> > + gain = p_sys->gain; >> > + gain_thres = p_sys->gain_thres; >> > + rms = p_sys->rms; >> > + sum = p_sys->sum; >> > + >> > + ga = attack < 2.0f ? 0.0f >> > + : as[f_round( attack * 0.001f * ( A_TBL - 1 ) >> )]; >> > + gr = as[f_round( release * 0.001f * ( A_TBL - 1 ) )]; >> > + rs = ( ratio - 1.0f ) / ratio; >> > + mug = db2lin( makeup_gain, p_sys ); >> > + knee_min = db2lin( threshold - knee, p_sys ); >> > + knee_max = db2lin( threshold + knee, p_sys ); >> > + ef_a = ga * 0.25f; >> > + ef_ai = 1.0f - ef_a; >> > + for( pos = 0; pos < i_samples; pos++ ) >> If you want, you can also declare a variable inside code (we accept c99) >> or in for() >> statement. >> >> Regards, >> >> -- >> fenrir >> >> _______________________________________________ >> vlc-devel mailing list >> To unsubscribe or modify your subscription options: >> http://mailman.videolan.org/listinfo/vlc-devel >> > > -------------- next part -------------- An HTML attachment was scrubbed... URL: -------------- next part -------------- A non-text attachment was scrubbed... Name: vlc-compressor-core.patch Type: text/x-patch Size: 25071 bytes Desc: not available URL: From srikiraju at gmail.com Sun Jun 27 16:45:28 2010 From: srikiraju at gmail.com (Srikanth Raju) Date: Sun, 27 Jun 2010 20:15:28 +0530 Subject: [vlc-devel] Media library Include file and Core In-Reply-To: <20100626190700.GA551@elivagar.org> References: <20100626190700.GA551@elivagar.org> Message-ID: Hello, On Sun, Jun 27, 2010 at 12:37 AM, Laurent Aimar wrote: > Hi, > > On Mon, Jun 21, 2010 at 11:23:35PM +0530, Srikanth Raju wrote: > > Hello, > > I have attached two patches. I will merge these into master by Wednesday > if > > nobody has any problems with them. These are the include files and some > minor > > changes to the core. > It seems that I am too late but here is a first pass (I probably didn't > see all > issues). > > > > > +typedef struct ml_gc_object_t > > +{ > > + vlc_spinlock_t spin; > > + bool pool; > > + uintptr_t refs; > > + void (*pf_destructor) (struct ml_gc_object_t *); > > +} ml_gc_object_t; > > + > > +#define ML_GC_MEMBERS ml_gc_object_t ml_gc_data; > Why gc_object_t isn't enough? > > I want to be able to ensure that only one of each ml_media_t exists per URI at runtime across all threads, so that we don't have to keep querying the database to keep it updated across the threads. The solution for this was a runtime pool of media objects, however there are cases where the ml_media_t object will not be in the database(such as when items aren't really stored in the database), hence we need an additional pool variable. > > +/** Main structure of the media library. VLC object. */ > > +struct media_library_t > > +{ > > + VLC_COMMON_MEMBERS > > + > > + module_t *p_module; /**< the media library module */ > > + media_library_sys_t *p_sys; /**< internal struture */ > > + > > + /** Member functions */ > > + struct > > + { > > + /**< Search in the database */ > > + int ( * pf_Find ) ( media_library_t *p_media_library, > > + vlc_array_t *p_result_array, > > + va_list args ); > > + > > + /**< Search in the database using an array of arguments */ > > + int ( * pf_FindAdv ) ( media_library_t *p_media_library, > > + vlc_array_t *p_result_array, > > + ml_select_e selected_type, > > + const char *psz_lvalue, > > + ml_ftree_t *tree ); > > + > > + /**< Update the database using an array of arguments */ > > + int ( * pf_Update ) ( media_library_t *p_media_library, > > + ml_select_e selected_type, > > + const char *psz_lvalue, > > + ml_ftree_t *where, > > + vlc_array_t *changes ); > > + > > + /**< Delete many medias in the database */ > > + int ( * pf_Delete ) ( media_library_t *p_media_library, > > + vlc_array_t *p_array ); > > + > > + /**< Control the media library */ > > + int ( * pf_Control ) ( media_library_t *p_media_library, > > + int i_query, va_list args ); > > + > > + /**< Create associated input item */ > > + input_item_t* ( * pf_InputItemFromMedia ) ( > > + media_library_t *p_media_library, int i_media ); > > + > > + /**< Get a media */ > > + ml_media_t* ( * pf_GetMedia ) ( > > + media_library_t *p_media_library, int i_media, > > + ml_select_e select, bool reload ); > > + } functions; > > +}; > Why is media_library_t a module? Do you plan to have multiple > implementations of it? > Would you suggest that it should be part of the core? There is a lot of code that is incoming, around 7000 lines, and we don't want to make the core heavy. It would also be nicer to not use camel case for function pointers (as > we do for every other module in vlc). > Will fix. Why pf_Find and pf_FindAdv? Isn't pf_Find a special case of pf_FindAdv? If > so, > a wrapper could reuse it instead of having the module defines 2 functions. > > Well yes. Hmm, again, at the expense of making the include larger? > + * @brief Structure to describe a media > > + * > > + * This is the main structure holding the meta data in ML. > > + * @see b_sparse indicates whether the media struct has valid values > > + * in its Extra fields. Otherwise, it must be loaded with the API > > + * function. > > + * @see i_id indicates whether this struct is saved in the ML if i_id > > 0 > > + * Otherwise, it can be added to the database > > + */ > > +struct ml_media_t > > +{ > > + ML_GC_MEMBERS > > + vlc_mutex_t lock; /**< Mutex for multithreaded > access */ > > + bool b_sparse; /**< Specifies if media is > loaded fully */ > > + ml_type_e i_type; /**< Type of the media > (ml_type_e) */ > Looking at ml_type_e, it seems intended to be used to store a 'or' of > multiple values. If so, it is illegal to use ml_type_e. > Ah, I suppose certain compilers don't like enum memory taking up multiple values? > > +/** > > + * @brief Create a Media Library VLC object. > > + * @param p_this Parent to attach the ML object to. > > + * @param psz_name Name for the module > > + * @return The ML object. > > + */ > > +VLC_EXPORT( media_library_t*, __ml_Create, ( vlc_object_t *p_this, char* > psz_name ) ); > > + > > +/** > > + * @brief Destructor for the Media library singleton > > + * @param p_this Parent the ML object is attached to > > + */ > > +VLC_EXPORT( void, __ml_Destroy, ( vlc_object_t* p_this ) ); > Do not add more functions with __ prefix. > You can easily do (for example): > > VLC_EXPORT( void, ml_Release, ( vlc_object_t* p_this ) ); > #define ml_Release(a) ml_Release( VLC_OBJECT(a)) > > and then simply do > > void (ml_Release)( vlc_object_t* p_this ) > { > code; > } > I can't see the change, except for naming, which I will fix. > > +/** > > + * @brief Checks if a given find tree has leaf nodes > > + * @param Find tree > > + * @return Number of leaf nodes > > + */ > > +static inline int ml_FtreeHasOp( ml_ftree_t* tree ) > > +{ > > + if( tree == NULL ) > > + return 0; > > + if( tree->criteria > 0 && tree->op == ML_OP_NONE ) > > + return 1; > > + else > > + return ml_FtreeHasOp( tree->left ) + ml_FtreeHasOp( tree->right > ); > > +} > > It seems to me that a lot of theses functions have no need to be defines > as > inline functions, and it would be way better to move them out of the .h > > Yes. They can be moved to the core( too many symbols in core ) or into the module ( too many module functions ). In general, this is the problem, where to place functions. What would be a good principle of where to move a particular function? > > +/** > > + * @brief Connect up a find tree > > + * @param op operator to connect with > > + * If op = ML_OP_NONE, then you are connecting to a tree consisting of > > + * only SPECIAL nodes. > > + * If op = ML_OP_NOT, then right MUST be NULL > > + * op must not be ML_OP_SPECIAL, @see __ml_FtreeSpec > > + * @param left part of the tree > > + * @param right part of the tree > > + * @return Pointer to new tree > > + * @note Use the helpers! > > + */ > > +VLC_EXPORT( ml_ftree_t*, ml_OpConnectChilds, ( ml_op_e op, ml_ftree_t* > left, > > + ml_ftree_t* right ) ); > > + > > +/** > > + * @brief Attaches a special node to a tree > > + * @param tree Tree to attach special node to > > + * @param crit Criteria may be SORT_ASC, SORT_DESC, LIMIT or DISTINCT > > + * @param limit Limit used if LIMIT criteria used > > + * @param Sort string used if SORT criteria is used > > + * @return Pointer to new tree > > + * @note Use the helpers > > + */ > > +VLC_EXPORT( ml_ftree_t*, __ml_FtreeSpec, ( ml_ftree_t* tree, > > + ml_select_e crit, > > + int limit, > > + char* sort ) ); > > + > > +/** > > + * @brief This function gives quick sequential adding capability > > + * @param left Tree to add to. This may be NULL > > + * @param right Tree to append. May not be NULL > > + * @return Pointer to new tree.*/ > > +static inline ml_ftree_t* ml_FtreeFastAnd( ml_ftree_t* left, > > + ml_ftree_t* right ) > > +{ > > + if( ml_FtreeHasOp( left ) == 0 ) > > + { > > + return ml_OpConnectChilds( ML_OP_NONE, left, right ); > > + } > > + else > > + { > > + return ml_OpConnectChilds( ML_OP_AND, left, right ); > > + } > > +} > > +#define ml_FtreeAnd( left, right ) ml_OpConnectChilds( ML_OP_AND, left, > right ) > > +#define ml_FtreeOr( left, right ) ml_OpConnectChilds( ML_OP_OR, left, > right ) > > +#define ml_FtreeNot( left ) ml_OpConnectChilds( ML_OP_NOT, left, > NULL ) > > + > > +#define ml_FtreeSpecAsc( tree, str ) __ml_FtreeSpec( tree, > ML_SORT_ASC, 0, str ) > > +#define ml_FtreeSpecDesc( tree, str ) __ml_FtreeSpec( tree, > ML_SORT_DESC, 0, str ) > > +#define ml_FtreeSpecLimit( tree, limit ) __ml_FtreeSpec( tree, > ML_LIMIT, limit, NULL ) > > +#define ml_FtreeSpecDistinct( tree ) __ml_FtreeSpec( tree, > ML_DISTINCT, 0, NULL ) > > + > > + > > > +/***************************************************************************** > > + * ML Core Functions > > + > *****************************************************************************/ > > + > > +/** > > + * @brief Create input item from media > > + * @param p_media_library This ML instance. > > + * @param i_media_id ID of the media to use to create an input_item. > > + * @return The media item. > > + */ > > +static inline input_item_t* ml_CreateInputItem( > > + media_library_t *p_media_library, int i_media_id ) > > +{ > > + return p_media_library->functions.pf_InputItemFromMedia( > p_media_library, > > + i_media_id > ); > > +} > > + > > +/** > > + * @brief Search in the database according some criterias > > + * > > + * @param p_media_library the media library object > > + * @param result a pointer to a result array > > + * @param ... parameters to select the data > > + * @return VLC_SUCCESS or an error > > + */ > > +static inline int __ml_Find( media_library_t *p_media_library, > > + vlc_array_t *p_result_array, ... ) > > +{ > > + va_list args; > > + int returned; > > + > > + va_start( args, p_result_array ); > > + returned = p_media_library->functions.pf_Find( p_media_library, > > + p_result_array, args > ); > > + va_end( args ); > > + > > + return returned; > > +} > > + > > + > > +/** > > + * @brief Search in the database according some criterias (threaded) > > + * @param p_media_library the media library object > > + * @param result_array a pointer to a result array > > + * @param result_type type of data to retrieve > > + * @param psz_lvalue This should contain any necessary lvalue/key > > + * for the given result_type. Used for ML_PEOPLE. Otherwise NULL > > + * @param args parameters to select the data > > + * @return VLC_SUCCESS or an error > > + */ > > +static inline int ml_FindAdv( media_library_t *p_media_library, > > + vlc_array_t *p_result_array, > > + ml_select_e result_type, > > + char* psz_lvalue, > > + ml_ftree_t *tree ) > > +{ > > + return p_media_library->functions.pf_FindAdv( p_media_library, > > + p_result_array, > > + result_type, > > + psz_lvalue, > > + tree ); > > +} > > + > > + > > +/** > > + * @brief Find a value in the ML database, fill p_result with it. > > + * @param p_media_library Media library object > > + * @param p_result Object to put result into > > + * @param Args [ SelectType [ PersonType ] Value ] ... ML_END > > + * @note Do not use this function directly. > > + */ > > +static inline int __ml_GetValue( media_library_t *p_media_library, > > + ml_result_t *p_result, > > + va_list args ) > > +{ > > + vlc_array_t *p_result_array = vlc_array_new(); > > + int i_ret = p_media_library->functions.pf_Find( p_media_library, > > + p_result_array, > > + args ); > > + if( i_ret != VLC_SUCCESS ) > > + goto exit; > > + if( vlc_array_count( p_result_array ) > 0 ) > > + memcpy( p_result, > > + ( ml_result_t* ) vlc_array_item_at_index( > p_result_array, 0 ), > > + sizeof( ml_result_t) ); > > + else > > + i_ret = VLC_EGENERIC; > > + > > +exit: > > + /* Note: Do not free the results, because of memcpy */ > > + vlc_array_destroy( p_result_array ); > > + return i_ret; > > +} > > + > > +/** > > + * @brief Search an INTEGER in the database > > + * This uses a Query but returns only one integer (>0), or an error > code. > > + * > > + * @param p_media_library the media library object > > + * @param va_args parameters to select the data > > + * @return Found INTEGER >= 0 or an error > > + */ > > +#define ml_GetInt( ml, ... ) __ml_GetInt( ml, __VA_ARGS__, ML_LIMIT, 1, > ML_END ) > > +static inline int __ml_GetInt( media_library_t *p_media_library, ... ) > > +{ > > + va_list args; > > + va_start( args, p_media_library ); > > + ml_result_t result; > > + int i_ret = __ml_GetValue( p_media_library, &result, args ); > > + va_end( args ); > > + if( i_ret != VLC_SUCCESS ) > > + return i_ret; > > + else > > + return result.value.i; > > +} > > + > > + > > +/** > > + * @brief Search a string (VARCHAR) in the database > > + * This uses a Query but returns only one integer (>0), or an error > code. > > + * > > + * @param p_media_library the media library object > > + * @param va_args parameters to select the data > > + * @return Found string, or NULL if not found or in case of error > > + */ > > +#define ml_FindPsz( ml, ... ) __ml_GetPsz( ml, __VA_ARGS__, ML_LIMIT, 1, > ML_END ) > > +static inline char* __ml_GetPsz( media_library_t *p_media_library, ... ) > > +{ > > + va_list args; > > + va_start( args, p_media_library ); > > + ml_result_t result; > > + int i_ret = __ml_GetValue( p_media_library, &result, args ); > > + va_end( args ); > > + if( i_ret != VLC_SUCCESS ) > > + return NULL; > > + else > > + return result.value.psz; // no need to duplicate > > +} > > + > > +/** > > + * @brief Generic update in Media Library database > > + * > > + * @param p_media_library the media library object > > + * @param selected_type the type of the element we're selecting > > + * @param where list of ids/uris to be changed > > + * @param changes list of changes to make in the entries > > + * @return VLC_SUCCESS or VLC_EGENERIC > > + */ > > +static inline int ml_Update( media_library_t *p_media_library, > > + ml_select_e selected_type, > > + const char* psz_lvalue, > > + ml_ftree_t *where, > > + vlc_array_t *changes ) > > +{ > > + return p_media_library->functions.pf_Update( p_media_library, > > + selected_type, > psz_lvalue, > > + where, changes ); > > +} > > + > > +/** > > + * @brief Update a given table > > + * @param p_media_library The media library object > > + * @param selected_type The table to update > > + * @param psz_lvalue The role of the person if selected_type = ML_PEOPLE > > + * @param id The id of the row to update > > + * @param ... The update data. [SelectType [RoleType] Value] > > + */ > > +#define ml_UpdateSimple( ml, sel, lval, id, ... ) \ > > + __ml_UpdateSimple( ml, sel, lval, id, __VA_ARGS__, ML_END ) > > +VLC_EXPORT( int, __ml_UpdateSimple, ( media_library_t *p_media_library, > > + ml_select_e selected_type, > > + const char* psz_lvalue, > > + int id, ... ) ); > > + > > +/** > > + * @brief Generic DELETE function > > + * Delete a media and all its references which don't point > > + * to anything else. > > + * > > + * @param p_media_library This media_library_t object > > + * @param id the id of the media to delete > > + * @return VLC_SUCCESS or VLC_EGENERIC > > + */ > > +static inline int > > +ml_DeleteSimple( media_library_t *p_media_library, int id ) > > +{ > > + vlc_array_t* p_where = vlc_array_new(); > > + ml_element_t* p_find = (ml_element_t *) calloc( 1, sizeof( > ml_element_t ) ); > > + p_find->criteria = ML_ID; > > + p_find->value.i = id; > > + vlc_array_append( p_where, p_find ); > > + int i_return = p_media_library->functions.pf_Delete( > p_media_library, > > + p_where ); > > + free( p_find ); > > + vlc_array_destroy( p_where ); > > + return i_return; > > +} > > + > > +/** > > + * @brief Delete many medias in the media library > > + * @param p_media_library Media library object > > + * @param p_array Array of ids to delete > > + * @return VLC_SUCCESS or VLC_EGENERIC > > + */ > > +static inline int > > +ml_Delete( media_library_t *p_media_library, vlc_array_t* p_array ) > > +{ > > + return p_media_library->functions.pf_Delete( p_media_library, > > + p_array ); > > +} > > + > > + > > > +/***************************************************************************** > > + * ML Person Related Functions > > + > *****************************************************************************/ > > + > > +/** > > + * @brief Create and append a person object to the given list > > + * @param pp_person pointer to person list. Set the address to null to > create new list > > + * @param i_role The role of the person > > + * @param psz_name The name string. Will be strdup'd > > + * @param i_id The id in the database > > + * @note This function is NOT thread safe. Please lock any associated > media > > + */ > > +static inline int ml_CreateAppendPersonAdv( ml_person_t **pp_person, > > + const char* psz_role, const char* psz_name, int i_id ) > > +{ > > + assert( i_id || ( psz_name && *psz_name && psz_role && *psz_role ) > ); > > + if( !pp_person ) > > + return VLC_EGENERIC; > > + if( *pp_person != NULL ) > > + return ml_CreateAppendPersonAdv( &((**pp_person).p_next), > > + psz_role, psz_name, i_id); > > + *pp_person = ( ml_person_t * ) calloc( 1, sizeof( ml_person_t ) ); > > + (*pp_person)->psz_name = (psz_name && *psz_name) ? strdup( psz_name > ): NULL; > > + (*pp_person)->psz_role = (psz_role && *psz_role) ? strdup( psz_role > ): NULL; > > + (*pp_person)->i_id = i_id; > > + (*pp_person)->p_next = NULL; > > + return VLC_SUCCESS; > > +} > > + > > +/** > > + * @brief Create and append a person object to the given list > > + * @param pp_person pointer to person list. > > + * Set the address to NULL to create a new list > > + * @param personfrom Person object to copy from > > + * @note Ignores the next variable and copies only the variables. > > + * Uses ml_CreateAppendPersonAdv > > + * @note This function is NOT threadsafe > > + */ > > +static inline int ml_CreateAppendPerson( ml_person_t **pp_person, > > + ml_person_t *p_personfrom ) > > +{ > > + return ml_CreateAppendPersonAdv( pp_person, > > + p_personfrom->psz_role, > > + p_personfrom->psz_name, > > + p_personfrom->i_id ); > > +} > > + > > +/** > > + * @brief Copy one person list into another > > + * @param a To list > > + * @param b From list > > + * @note On errors, you have to free any allocated persons yourself > > + * @note This function is NOT threadsafe. Please ensure your medias are > locked > > + */ > > +static inline int ml_CopyPersons( ml_person_t** a, ml_person_t* b ) > > +{ > > + int i_ret; > > + while( b ) > > + { > > + i_ret = ml_CreateAppendPerson( a, b ); > > + if( i_ret != VLC_SUCCESS ) > > + return i_ret; > > + b = b->p_next; > > + } > > + return VLC_SUCCESS; > > +} > > + > > + > > +/** > > + * @brief Returns a person list of given type > > + * @param p_ml The ML object > > + * @param p_media The Media object > > + * @param i_type The person type > > + * @note This function is thread safe > > + */ > > +VLC_EXPORT( ml_person_t*, ml_GetPersonsFromMedia, ( media_library_t* > p_ml, > > + ml_media_t* p_media, > > + const char *psz_role > ) ); > > + > > + > > +#define ml_GetAlbumArtistsFromMedia( a, b ) ml_GetPersonsFromMedia( a, > b, ML_PERSON_ALBUM_ARTIST ); > > +#define ml_GetArtistsFromMedia( a, b ) ml_GetPersonsFromMedia( a, > b, ML_PERSON_ARTIST ); > > +#define ml_GetEncodersFromMedia( a, b ) ml_GetPersonsFromMedia( a, > b, ML_PERSON_ENCODER ); > > +#define ml_GetPublishersFromMedia( a, b ) ml_GetPersonsFromMedia( a, > b, ML_PERSON_PUBLISHER ); > > + > > +/** > > + * @brief Delete a certain type of people from a media > > + * @param p_media Media to delete from > > + * @param i_type Type of person to delete > > + * @note This function is threadsafe > > + */ > > +VLC_EXPORT( void, ml_DeletePersonTypeFromMedia, ( ml_media_t* p_media, > > + const char *psz_role ) > ); > > + > > + > > +/** > > + * @brief Creates and adds the playlist based on a given find tree > > + * @param p_ml Media library object > > + * @param p_tree Find tree to create SELECT > > + */ > > + > > +VLC_EXPORT( void, ml_PlaySmartPlaylistBasedOn, ( media_library_t* p_ml, > > + ml_ftree_t* p_tree ) ); > > + > > + > > +/** > > + * Convenience Macros > > + */ > > + > > +/** > > + * Get information using the *media* ID. This returns only 1 > information. > > + * @note You have to free the string returned (if that's a string!). > > + */ > > +#define ml_GetAlbumById( a, id ) ml_GetPsz( a, ML_ALBUM, > ML_ID, id ) > > +#define ml_GetArtistById( a, id ) ml_GetPsz( a, ML_PEOPLE, > ML_PERSON_ARTIST, ML_ID, id ) > > +#define ml_GetCoverUriById( a, id ) ml_GetPsz( a, ML_COVER, > ML_ID, id ) > > +#define ml_GetEncoderById( a, id ) ml_GetPsz( a, ML_PEOPLE, > ML_PERSON_ENCODER, ML_ID, id ) > > +#define ml_GetExtraById( a, id ) ml_GetPsz( a, ML_EXTRA, > ML_ID, id ) > > +#define ml_GetGenreById( a, id ) ml_GetPsz( a, ML_GENRE, > ML_ID, id ) > > +#define ml_GetOriginalTitleById( a, id ) ml_GetPsz( a, > ML_ORIGINAL_TITLE, ML_ID, id ) > > +#define ml_GetPublisherById( a, id ) ml_GetPsz( a, ML_PEOPLE, > ML_PERSON_PUBLISHER, ML_ID, id ) > > +#define ml_GetTitleById( a, id ) ml_GetPsz( a, ML_TITLE, > ML_ID, id ) > > +#define ml_GetUriById( a, id ) ml_GetPsz( a, ML_URI, ML_ID, > id ) > > + > > +#define ml_GetAlbumIdById( a, id ) ml_GetInt( a, ML_ALBUM_ID, > ML_ID, id ) > > +#define ml_GetArtistIdById( a, id ) ml_GetInt( a, ML_PEOPLE_ID, > ML_PERSON_ARTIST, ML_ID, id ) > > +#define ml_GetDurationById( a, id ) ml_GetInt( a, ML_DURATION, > ML_ID, id ) > > +#define ml_GetEncoderIdById( a, id ) ml_GetInt( a, ML_PEOPLE_ID, > ML_PERSON_ENCODER, ML_ID, id ) > > +#define ml_GetLastPlayedById( a, id ) ml_GetInt( a, > ML_LAST_PLAYED, ML_ID, id ) > > +#define ml_GetPlayedCountById( a, id ) ml_GetInt( a, > ML_PLAYED_COUNT, ML_ID, id ) > > +#define ml_GetPublisherIdById( a, id ) ml_GetInt( a, ML_PEOPLE_ID, > ML_PERSON_PUBLISHER, ML_ID, id ) > > +#define ml_GetScoreById( a, id ) ml_GetInt( a, ML_SCORE, > ML_ID, id ) > > +#define ml_GetTrackNumberById( a, id ) ml_GetInt( a, > ML_TRACK_NUMBER, ML_ID, id ) > > +#define ml_GetTypeById( a, id ) ml_GetInt( a, ML_TYPE, > ML_ID, id ) > > +#define ml_GetYearById( a, id ) ml_GetInt( a, ML_YEAR, > ML_ID, id ) > > +#define ml_GetVoteById( a, id ) ml_GetInt( a, ML_VOTE, > ML_ID, id ) > > + > > +/** Albums handling */ > > +#define ml_GetAlbumId( a, b ) ml_GetInt( a, ML_ALBUM_ID, > ML_ALBUM, b ) > > + > > +/** People handling */ > > +#define ml_GetArtistId( a, b ) ml_GetInt( a, ML_PERSON_ID, > ML_PERSON_ARTIST, ML_PERSON, ML_PERSON_ARTIST, b ) > > +#define ml_GetEncoderId( a, b ) ml_GetInt( a, ML_PERSON_ID, > ML_PERSON_ENCODER, ML_PERSON, ML_PERSON_ENCODER, b ) > > +#define ml_GetPublisherId( a, b ) ml_GetInt( a, ML_PERSON_ID, > ML_PERSON_PUBLISHER, ML_PERSON, ML_PERSON_PUBLISHER, b ) > > + > > +/** Counts handling */ > > +#define ml_GetMediaCount( a, ... ) __ml_GetInt( a, > ML_COUNT_MEDIA, __VA_ARGS__, ML_END ) > > +#define ml_GetAlbumCount( a, ... ) __ml_GetInt( a, > ML_COUNT_ALBUM, __VA_ARGS__, ML_END ) > > +#define ml_GetPeopleCount( a, ... ) __ml_GetInt( a, > ML_COUNT_PEOPLE, __VA_ARGS__, ML_END ) > > + > > +#define ml_Find( a, b, ... ) __ml_Find( a, b, > __VA_ARGS__, ML_END ) > > + > > +#define ml_FindAlbum( a, b, ... ) __ml_Find( a, b, ML_ALBUM, > __VA_ARGS__, ML_END ) > > +#define ml_FindArtist( a, b, ... ) __ml_Find( a, b, ML_PERSON, > ML_PERSON_ARTIST, __VA_ARGS__, ML_END ) > > +#define ml_FindEncoder( a, b, ... ) __ml_Find( a, b, ML_PERSON, > ML_PERSON_ENCODER, __VA_ARGS__, ML_END ) > > +#define ml_FindGenre( a, b, ... ) __ml_Find( a, b, ML_GENRE, > __VA_ARGS__, ML_END ) > > +#define ml_FindMedia( a, b, ... ) __ml_Find( a, b, ML_MEDIA, > __VA_ARGS__, ML_END ) > > +#define ml_FindOriginalTitle( a, b, ... ) __ml_Find( a, b, > ML_ORIGINAL_TITLE, __VA_ARGS__, ML_END ) > > +#define ml_FindPublisher( a, b, ... ) __ml_Find( a, b, ML_PERSON, > ML_PERSON_PUBLISHER, __VA_ARGS__, ML_END ) > > +#define ml_FindTitle( a, b, ... ) __ml_Find( a, b, ML_TITLE, > __VA_ARGS__, ML_END ) > > +#define ml_FindType( a, b, ... ) __ml_Find( a, b, ML_TYPE, > __VA_ARGS__, ML_END ) > > +#define ml_FindUri( a, b, ... ) __ml_Find( a, b, ML_URI, > __VA_ARGS__, ML_END ) > > +#define ml_FindYear( a, b, ... ) __ml_Find( a, b, ML_YEAR, > __VA_ARGS__, ML_END ) > > + > > +#define ml_FindAllAlbums( a, b ) ml_FindAlbum( a, b, > ML_DISTINCT ) > > +#define ml_FindAllArtists( a, b ) ml_FindArtist( a, b, > ML_DISTINCT ) > > +#define ml_FindAllGenres( a, b ) ml_FindGenre( a, b, > ML_DISTINCT ) > > +#define ml_FindAllMedias( a, b ) ml_FindMedia( a, b, > ML_DISTINCT ) > > +#define ml_FindAllOriginalTitles( a, b ) ml_FindOriginalTitle( a, b, > ML_DISTINCT ) > > +#define ml_FindAllPublishers( a, b, ... ) ml_FindPublisher( a, b, > ML_DISTINCT ) > > +#define ml_FindAllTitles( a, b ) ml_FindTitle( a, b, > ML_DISTINCT ) > > +#define ml_FindAllTypes( a, b ) ml_FindType( a, b, > ML_DISTINCT ) > > +#define ml_FindAllUris( a, b ) ml_FindUri( a, b, > ML_DISTINCT ) > > +#define ml_FindAllYears( a, b ) ml_FindYear( a, b, > ML_DISTINCT ) > > + > > +#define ml_FindAlbumAdv( a, b, c ) ml_FindAdv( a, b, ML_ALBUM, > NULL, c ) > > +#define ml_FindArtistAdv( a, b, c ) ml_FindAdv( a, b, ML_PERSON, > ML_PERSON_ARTIST, c ) > > +#define ml_FindEncoderAdv( a, b, c ) ml_FindAdv( a, b, ML_PERSON, > ML_PERSON_ENCODER, c ) > > +#define ml_FindGenreAdv( a, b, c ) ml_FindAdv( a, b, ML_GENRE, > NULL, c ) > > +#define ml_FindMediaAdv( a, b, c ) ml_FindAdv( a, b, ML_MEDIA, > NULL, c ) > > +#define ml_FindOriginalTitleAdv( a, b, c ) ml_FindAdv( a, b, > ML_ORIGINAL_TITLE,NULL, c ) > > +#define ml_FindPublisherAdv( a, b, c ) ml_FindAdv( a, b, > ML_PUBLISHER, ML_PERSON_PUBLISHER, c ) > > +#define ml_FindTitleAdv( a, b, c ) ml_FindAdv( a, b, ML_TITLE, > NULL, c ) > > +#define ml_FindTypeAdv( a, b, c ) ml_FindAdv( a, b, ML_TYPE, > NULL, c ) > > +#define ml_FindUriAdv( a, b, c ) ml_FindAdv( a, b, ML_URI, > NULL, c ) > > +#define ml_FindYearAdv( a, b, c ) ml_FindAdv( a, b, ML_YEAR, > NULL, c ) > > Btw, are all thoses functions really needed by a ML users ? Aren't some of > them private to the core ? If so, pleases move them there. > > No, all these functions are needed by users. > Why are you using i_id ? With proper ref counting you should be able to > not use it (playlist is a bad example, and it is plane to remove it). > > The id is the primary key in the database. I'm not sure what "problem" you have in mind when you are referring to the playlist. I suppose that the playlist had a constantly varying structure and it would be difficult to keep track of old stray ids. However, this isn't the case here, as the database ensures that the primary key in unique. This is also a performance thing, where it's much faster to search by index( i_id ), than by a direct search. Could you emphasize what you are trying to avoid? > +/** > > + * @brief Create an instance of the media library > > + * @param p_this Parent object > > + * @param psz_name Name which is passed to module_need (not needed) > > + * @return p_ml created and attached, module loaded. NULL if > > + * not able to load > > + */ > > +media_library_t *__ml_Create( vlc_object_t *p_this, char *psz_name ) > > +{ > > + media_library_t *p_ml = NULL; > Useless assignation. > > + > > + p_ml = ( media_library_t * ) vlc_custom_create( > > + p_this, sizeof( media_library_t ), > > + VLC_OBJECT_GENERIC, "media-library" ); > > + if( !p_ml ) > > + { > > + msg_Err( p_this, "unable to create media library object" ); > > + return NULL; > > + } > > + vlc_object_attach( p_ml, p_this ); > > + > > + p_ml->p_module = module_need( p_ml, "media-library", psz_name, false > ); > > + if( !p_ml->p_module ) > > + { > > + vlc_object_release( p_ml ); > > + msg_Err( p_this, "Media Library provider not found" ); > > + return NULL; > > + } > > + > > + return p_ml; > > +} > > > +/** > > + * @brief Acquire a reference to the media library singleton > > + * @param p_this Object that holds the reference > > + * @return media_library_t The ml object. NULL if not compiled with > > + * media library or if unable to load > > + */ > > +media_library_t* __ml_Hold( vlc_object_t* p_this ) > > +{ > > + media_library_t* p_ml = NULL; > Same (apply to other cases). > Will fix. > > + p_ml = libvlc_priv (p_this->p_libvlc)->p_ml; > > + assert( VLC_OBJECT( p_ml ) != p_this ); > > + if( p_ml == NULL && > > + var_GetBool( p_this->p_libvlc, > "load-media-library-on-startup" ) == false ) > No == false or true or ... > > If the ML didn't load at startup, start it up now, when the user has asked for it. > > + { > > + libvlc_priv (p_this->p_libvlc)->p_ml > > + = __ml_Create( VLC_OBJECT( p_this->p_libvlc ), NULL ); > > + p_ml = libvlc_priv (p_this->p_libvlc)->p_ml; > > + } > I don't see how that can be thread safe. > > You're right. It's not. Will fix. > + if( p_ml ) > > + vlc_object_hold( p_ml ); > > + return p_ml; > > +} > > + > > +/** > > + * @brief Release a reference to the media library singleton > > + * @param p_this Object that holds the reference > > + */ > > +void __ml_Release( vlc_object_t* p_this ) > > +{ > > + media_library_t* p_ml; > > + p_ml = libvlc_priv (p_this->p_libvlc)->p_ml; > > + if( p_ml == NULL ) > > + { > > + msg_Warn( p_this->p_libvlc , "Spurious release ML called"); > > + return; > > + } > > + assert( VLC_OBJECT( p_ml ) != p_this ); > > + vlc_object_release( p_ml ); > > +} > Wouldn't it be simpler and better to handle it as the playlist do ? ie > a single ml_Get() function. > > Hmm yes. There is an added downside that we don't know if stray threads are holding references they shouldn't be. But then again, all threads should have joined by that time anyway. Will do. > > -- > fenrir > > _______________________________________________ > vlc-devel mailing list > To unsubscribe or modify your subscription options: > http://mailman.videolan.org/listinfo/vlc-devel > -- Regards, Srikanth Raju -------------- next part -------------- An HTML attachment was scrubbed... URL: From fenrir at elivagar.org Sun Jun 27 18:56:31 2010 From: fenrir at elivagar.org (Laurent Aimar) Date: Sun, 27 Jun 2010 18:56:31 +0200 Subject: [vlc-devel] Dynamic range compressor patch In-Reply-To: References: <201006220353.57723.rem@videolan.org> <20100624190542.GA21497@elivagar.org> <20100626195158.GA2342@elivagar.org> Message-ID: <20100627165631.GA32360@elivagar.org> Hi, On Sun, Jun 27, 2010 at 10:24:25AM -0500, Ron Wright wrote: > I didn't like the delay in the attack and release settings for peak > compression, so I have attached the updated compressor core patch that resolves > the problem. A few remarks (but probably the last ones :) > +typedef struct > +{ > + struct > + { > + float *chan_vals; float chan_vals[AOUT_CHAN_MAX] will avoid the calloc/free and will also be faster (no pointer deferencings). > + if( p_filter->fmt_in.audio.i_format != VLC_CODEC_FL32 || > + p_filter->fmt_out.audio.i_format != VLC_CODEC_FL32 ) > + { > + p_filter->fmt_in.audio.i_format = VLC_CODEC_FL32; > + p_filter->fmt_out.audio.i_format = VLC_CODEC_FL32; > + msg_Warn( p_filter, "bad input or output format" ); > + return VLC_EGENERIC; > + } > + if( !AOUT_FMTS_SIMILAR( &p_filter->fmt_in.audio, > + &p_filter->fmt_out.audio ) ) > + { > + p_filter->fmt_out.audio = p_filter->fmt_in.audio; > + msg_Warn( p_filter, "input and output formats are not similar" ); > + return VLC_EGENERIC; > + } I think they could be merged (AOUT_FMTS_IDENTICAL will test the format too) but as I see that it is always done in 2 steps in other modules, anyone know why ? > + p_sys = p_filter->p_sys = calloc( 1, sizeof(struct filter_sys_t) ); sizeof(*p_sys) is less dangerous IMHO. > + count = p_sys->count; [...] > + if( ( count++ & 3 ) == 3 ) > + { [...] > + } [...] > + p_sys->count = count; As it is uses only once, it might not be worth it to use a temporary variable, but do as you prefer. > +static float db2lin( float db, filter_sys_t * p_sys ) > +{ > + float scale = ( db - DB_MIN ) * LIN_TABLE_SIZE / ( DB_MAX - DB_MIN ); > + int base = f_round( scale - 0.5f ); > + float ofs = scale - base; > + float *lin_data = p_sys->lin_data; > + > + if( base < 1 ) > + { > + return 0.0f; > + } > + else if( base > LIN_TABLE_SIZE - 3 ) > + { > + return lin_data[LIN_TABLE_SIZE - 2]; > + } > + > +#ifdef DB_DEFAULT_CUBE > + return cube_interp( ofs, lin_data[base - 1], > + lin_data[base], > + lin_data[base + 1], > + lin_data[base + 2] ); > +#else > + return ( 1.0f - ofs ) * lin_data[base] + ofs * lin_data[base + 1]; > +#endif Trailing whitespace. > +static void buffer_process( float * p_buf, int i_channels, float gain, > + float mug, lookahead * la ) > +{ > + for( int pos_chan = 0; pos_chan < i_channels; pos_chan++ ) > + { > + float x = p_buf[pos_chan]; > + p_buf[pos_chan] = la->buffer[la->pos].chan_vals[pos_chan] * gain * mug; > + la->buffer[la->pos].chan_vals[pos_chan] = x; > + } Trailing whitespace. > + la->pos = ( la->pos + 1 ) & ( LOOKAHEAD_SIZE - 1 ); > +} Otherwise, could you send the patches using git format-patch ? It is easier to apply and allow to commit without loosing the authorship. Other than that, I don't have anything to add, good work ! Regards, -- fenrir From fenrir at elivagar.org Sun Jun 27 19:02:59 2010 From: fenrir at elivagar.org (Laurent Aimar) Date: Sun, 27 Jun 2010 19:02:59 +0200 Subject: [vlc-devel] Dynamic range compressor patch In-Reply-To: References: <201006220353.57723.rem@videolan.org> <20100624190542.GA21497@elivagar.org> <20100626195158.GA2342@elivagar.org> Message-ID: <20100627170259.GB32360@elivagar.org> Hi, On Sun, Jun 27, 2010 at 01:58:34AM -0500, Ron Wright wrote: > I have updated the patches again as usual, and added a third patch that > includes the compressor module to be linked against the math library.? > Moreover, I have modified the compressor code so as to add latency compensation > for RMS compression, also known as "lookahead."? However, this comes at a > cost.? The cost is a delay at the output that is inversely proportional to the > sample rate.? If any of you folks can think of a better way of implementing > this lookahead mechanism, let me know. Instead of using a fixed look ahead size, you could compute it depending on the samplerate. This way it will stay constant, and it seems to me that it is more logical (your algo becomes independant of the samplerate). Of course you can clamp it to sane min/max value and approximate it by using the closer power of two to continue using the & (value-1) trick to avoid any divisions in the round robin buffers. Anyway, it's not needed for the inclusion of your patch, and so you can do it (if you think it should be done) after the current patches go into the repo. -- fenrir From rem at videolan.org Sun Jun 27 23:20:01 2010 From: rem at videolan.org (=?utf-8?q?R=C3=A9mi?= Denis-Courmont) Date: Mon, 28 Jun 2010 00:20:01 +0300 Subject: [vlc-devel] =?utf-8?q?=5Bvlc-commits=5D_commit=3A_xspf=3A_silentl?= =?utf-8?q?y_skip_unknown_extension_nodes_=28fix_=233696=29_=28_R=C3=A9mi_?= =?utf-8?q?Duraffort_=29?= In-Reply-To: <20100627180808.C17ECFBB9C@albiero.videolan.org> References: <20100627180808.C17ECFBB9C@albiero.videolan.org> Message-ID: <201006280020.01794.rem@videolan.org> On Sunday 27 June 2010 21:08:08 git at videolan.org, you wrote: > + /* Skip all children */ > + while( xml_ReaderRead( p_xml_reader ) == 1 ) > + { > + if( xml_ReaderNodeType( p_xml_reader ) == > XML_READER_ENDELEM ) + { > + char *psz_name = xml_ReaderName( p_xml_reader ); > + if( !strcmp( psz_name, "extension" ) ) What if you have nested tags? I would assume libxml provides a saner way to skip the content of a tag. -- R?mi Denis-Courmont From pdherbemont at free.fr Mon Jun 28 00:34:15 2010 From: pdherbemont at free.fr (Pierre d'Herbemont) Date: Mon, 28 Jun 2010 00:34:15 +0200 Subject: [vlc-devel] libvlc_media_discoverer_new_from_name return case In-Reply-To: <201006262252.28038.rem@videolan.org> References: <5F08612F-ECD6-4467-B800-DB826A789614@gmail.com> <201006262252.28038.rem@videolan.org> Message-ID: 2010/6/26 R?mi Denis-Courmont : > On Saturday 26 June 2010 22:23:17 Joel Blumen, you wrote: >> Hi, >> >> I have been looking at a VLCAssert that is getting caught in VLCKit when >> there is no internet connection. The cause appears to be >> libvlc_media_discoverer_new_from_name( libvlc_instance_t * p_inst, const >> char * psz_name) in media_discoverer.c which returns null when there is no >> internet connection. I have not yet confirmed if it does this for every >> name that it can receive. >> >> My question is this: Is this the intended behavior of this method to return >> null when there is no internet, and therefore VLCKit/Lunettes should >> handle the null generated due to lack of connectivity, or should this >> still return an object anyways? > > That should return NULL if the media service failed to start. What that means > will depend on the specific service. In the case of VLCKit we could return some kind of Proxy object that will eventually wait for network connectivity, and reattempt to reload the service. As Remi said, we will have to manually handle the case for the concerned media_discoverer. Pierre. From dilaroga at gmail.com Mon Jun 28 02:02:55 2010 From: dilaroga at gmail.com (Sebastien Zwickert) Date: Mon, 28 Jun 2010 02:02:55 +0200 Subject: [vlc-devel] [PATCH] MacOS: fixes memory management issue. Message-ID: Hi, In attachment a patch that fixes a memory management and that closes #3807. -- Sebastien Zwickert. -------------- next part -------------- A non-text attachment was scrubbed... Name: 0001-MacOS-fixes-memory-management-issue.patch Type: application/octet-stream Size: 778 bytes Desc: not available URL: -------------- next part -------------- From jb at videolan.org Mon Jun 28 08:25:49 2010 From: jb at videolan.org (Jean-Baptiste Kempf) Date: Mon, 28 Jun 2010 08:25:49 +0200 Subject: [vlc-devel] [PATCH] MacOS: fixes memory management issue. In-Reply-To: References: Message-ID: <20100628062549.GA28804@videolan.org> On Mon, Jun 28, 2010 at 02:02:55AM +0200, Sebastien Zwickert wrote : > In attachment a patch that fixes a memory management and that closes #3807. Applied. Thanks Best Regards, -- Jean-Baptiste Kempf http://www.jbkempf.com/ From jb at videolan.org Mon Jun 28 08:32:56 2010 From: jb at videolan.org (Jean-Baptiste Kempf) Date: Mon, 28 Jun 2010 08:32:56 +0200 Subject: [vlc-devel] Call for 1.1.1 Message-ID: <20100628063256.GA712@videolan.org> Hello, VLC 1.1.1 is on its way, and I would like to release ASAP. If you have patches/issues, please fix them before it is too late. Best Regards, -- Jean-Baptiste Kempf http://www.jbkempf.com/ From ileoo at videolan.org Mon Jun 28 08:49:11 2010 From: ileoo at videolan.org (Ilkka Ollakka) Date: Mon, 28 Jun 2010 09:49:11 +0300 Subject: [vlc-devel] [vlc-commits] commit: Preparse the TS until at least one ES is declared. (Laurent Aimar ) In-Reply-To: <20100627182210.C9F2CFBBA8@albiero.videolan.org> References: <20100627182210.C9F2CFBBA8@albiero.videolan.org> Message-ID: <20100628064911.GA19199@linux-3azp> On Sun, Jun 27, 2010 at 08:22:10PM +0200, git at videolan.org wrote: > vlc/vlc-1.1 | branch: master | Laurent Aimar | Sun Jun 27 00:18:46 2010 +0200| [f4b1fb2eb0d93e60c751bd24bae9ccc9f3be6ed1] | committer: Jean-Baptiste Kempf > Preparse the TS until at least one ES is declared. > It is a better workaround to #3075 and it makes preparsing return the ES list > (not yet perfect for that). > (cherry picked from commit 46576f85796c8fd8a06df1d39102fed7b6f9a82c) > Signed-off-by: Jean-Baptiste Kempf I don't think this one should be backported currently, as after this commit :program=pid selection doesn't work anymore in dvb-playlists. nefrir told that he is looking in the issue, but no fix yet, so please revert. -- Ilkka Ollakka Virtue is its own punishment. -------------- next part -------------- A non-text attachment was scrubbed... Name: not available Type: application/pgp-signature Size: 490 bytes Desc: not available URL: From fenrir at elivagar.org Mon Jun 28 09:50:22 2010 From: fenrir at elivagar.org (Laurent Aimar) Date: Mon, 28 Jun 2010 09:50:22 +0200 Subject: [vlc-devel] [vlc-commits] commit: Preparse the TS until at least one ES is declared. (Laurent Aimar ) In-Reply-To: <20100628064911.GA19199@linux-3azp> References: <20100627182210.C9F2CFBBA8@albiero.videolan.org> <20100628064911.GA19199@linux-3azp> Message-ID: <20100628075022.GA12262@elivagar.org> On Mon, Jun 28, 2010 at 09:49:11AM +0300, Ilkka Ollakka wrote: > On Sun, Jun 27, 2010 at 08:22:10PM +0200, git at videolan.org wrote: > > vlc/vlc-1.1 | branch: master | Laurent Aimar | Sun Jun 27 00:18:46 2010 +0200| [f4b1fb2eb0d93e60c751bd24bae9ccc9f3be6ed1] | committer: Jean-Baptiste Kempf > > > Preparse the TS until at least one ES is declared. > > > It is a better workaround to #3075 and it makes preparsing return the ES list > > (not yet perfect for that). > > (cherry picked from commit 46576f85796c8fd8a06df1d39102fed7b6f9a82c) > > > Signed-off-by: Jean-Baptiste Kempf > > I don't think this one should be backported currently, as after this > commit :program=pid selection doesn't work anymore in dvb-playlists. > nefrir told that he is looking in the issue, but no fix yet, so please > revert. I don't think it is worth it to revert, I will fix it tonight or tomorrow at worst (and this commit in itself is fine). Btw, the patch only makes the real issue more visible. -- fenrir From jagged at vtnetworks.net Mon Jun 28 13:30:54 2010 From: jagged at vtnetworks.net (Jeremiah Gilbert) Date: Mon, 28 Jun 2010 07:30:54 -0400 (EDT) Subject: [vlc-devel] Intel DXVA2 green screen issue Message-ID: Hello, j-b asked that I post the following information here. I hope it is of some help. The Intel green screen issue seems to be shared by 2 projects (xbmc + vlc) who use ffmpeg code. I believe the issue actually lies in the ffmpeg dxva code. Reading the document from Intel at the bottom of this page: http://software.intel.com/en-us/articles/using-h264avc-directx-video-acceleration-with-the-intel-g45gm45-express-chipsets/ describing the implementation work they did w/ Casimir666 on implementing DXVA in MPC-HC a couple things stand out: "The application/codec needs to inform the hardware it is sending a full list of reference pictures by setting the DXVA_PicEntry_H264.Reserved16Bits to 0x34c." I believe this is an error in the document and that it should read DXVA_PicParam_H264.Reserved16Bits, as there is no such variable in the PicEntry_H264 structure (which is a member of the PicParam_H264 structure.) Also reviewing Casimir666's current MPC-HC code reveals this: Code: if(m_pFilter->GetPCIVendor() == PCIV_Intel) m_DXVAPicParams.Reserved16Bits = 0x534c; else m_DXVAPicParams.Reserved16Bits = 0; Interestingly this differs from the article (setting it to 0x534c instead of 0x34c). Both of these are quite different from what Microsoft's DXVA doc specifies (this parameter should be set to 0, 1, 2, or 3). In the current ffmpeg source it is set to 3. (see Microsoft DXVA specification doc: http://www.microsoft.com/downloads/d...6-714063a6d7a6) The next interesting peice in the Intel article was this: "One of the fundamental differences about the implementation on the Intel Graphics Media Accelerator X4500HD should be called out at this point. In other implementations, the RefPicList[][].Index7Bits contains a index into the DXVA_PicParams_H264.RefFrameList[]. The index is its position in the .master. reference list. On the Intel GMA X4500HD, the RefPicList[][].Index7Bits needs to contain the surface index . so essentially the reference picture structure for slices has the same information that the master list has in its Index7Bits field." They also include some of the code demonstrating how it was done (though from what I can tell, it's since changed). I think this is likely the heart of the issue. Unfortunately, I know next to nothing about the ffmpeg code (Which is where I think the main change would need to be implemented) and even less about h264 decoding. Though, I'm happy to help test. -Jeremiah From rem at videolan.org Mon Jun 28 14:14:16 2010 From: rem at videolan.org (=?iso-8859-1?q?R=E9mi?= Denis-Courmont) Date: Mon, 28 Jun 2010 15:14:16 +0300 Subject: [vlc-devel] [vlc-commits] commit: skins2(Linux): check if _NET_WM_PID is supported (Erwan Tulou ) In-Reply-To: <20100628090852.717B8FB675@albiero.videolan.org> References: <20100628090852.717B8FB675@albiero.videolan.org> Message-ID: <201006281514.17052.rem@videolan.org> On Monday 28 June 2010 12:08:52 git at videolan.org, you wrote: > vlc | branch: master | Erwan Tulou | Mon Jun 28 > 10:13:03 2010 +0200| [ec30dbc12d48358711d25a5c80a509e641e6bb79] | > committer: Erwan Tulou > > skins2(Linux): check if _NET_WM_PID is supported If the window manager is started after VLC, you won't define the PID anymore, which is wrong. And if there is no window manager, you couldn't care less that NET_WM_PID is defined but not supported. -- R?mi Denis-Courmont From alexo.veto at gmail.com Mon Jun 28 14:22:49 2010 From: alexo.veto at gmail.com (Savin Alex) Date: Mon, 28 Jun 2010 16:22:49 +0400 Subject: [vlc-devel] add subtitles autodetect patch Message-ID: <201006281622.49970.alexo.veto@gmail.com> add subtitles autodetect patch, it also required enca library, should work, but I don't know how add enca library to vlc build config, so can't test -- Best regards, ????????? mailto:alexo.veto at gmail.com -------------- next part -------------- A non-text attachment was scrubbed... Name: vlc_sub_enc_autodetect.patch Type: text/x-patch Size: 1334 bytes Desc: not available URL: From alexo.veto at gmail.com Mon Jun 28 14:27:23 2010 From: alexo.veto at gmail.com (Savin Alex) Date: Mon, 28 Jun 2010 16:27:23 +0400 Subject: [vlc-devel] [patch] add subtitles autodetect Message-ID: <201006281627.23811.alexo.veto@gmail.com> add subtitles autodetect, it also required enca library, should work, but I don't know how add enca library to vlc build config, so can't test diff --git a/src/input/stream.c b/src/input/stream.c index f0a90dc..9da32ad 100644 --- a/src/input/stream.c +++ b/src/input/stream.c @@ -27,6 +27,9 @@ #include #include +#include +#include +#include #include #include @@ -1501,6 +1504,23 @@ char *stream_ReadLine( stream_t *s ) int i_bom_size = 0; const char *psz_encoding = NULL; + if (getenv("LANG")){ + char lang[3]; + strncpy(lang, getenv("LANG"), 2)); + lang[2]=0; + EncaAnalyser analyser; + EncaEncoding encoding; + const int bufferlen=16384; + const uint8_t **ppchar; + int data_len = stream_Peek( s, ppchar, bufferlen ); + analyser = enca_analyser_alloc((const char *)lang); + if (analyser){ + encoding = enca_analyse_const(analyser, (unsigned char *)ppchar, &data_len); + psz_encoding = enca_charset_name(encoding.charset, ENCA_NAME_STYLE_ICONV); + } + //enca_analyser_free (analyser); + } + if( !memcmp( p_data, "\xEF\xBB\xBF", 3 ) ) { psz_encoding = "UTF-8"; -- Best regards, ????????? mailto:alexo.veto at gmail.com -------------- next part -------------- A non-text attachment was scrubbed... Name: vlc_sub_enc_autodetect.patch Type: text/x-patch Size: 1334 bytes Desc: not available URL: From rem at videolan.org Mon Jun 28 15:59:59 2010 From: rem at videolan.org (=?iso-8859-15?q?R=E9mi?= Denis-Courmont) Date: Mon, 28 Jun 2010 16:59:59 +0300 Subject: [vlc-devel] [patch] add subtitles autodetect In-Reply-To: <201006281627.23811.alexo.veto@gmail.com> References: <201006281627.23811.alexo.veto@gmail.com> Message-ID: <201006281659.59842.rem@videolan.org> On Monday 28 June 2010 15:27:23 Savin Alex, you wrote: > add subtitles autodetect, You can't do that here. stream_ReadLine() is used not only by the subtitle parsers. You will confuse everything else. > it also required enca library, > should work, but I don't know how add enca library to vlc build config, so > can't test You would need to patch configure.ac -- R?mi Denis-Courmont From ivoire at videolan.org Mon Jun 28 18:12:28 2010 From: ivoire at videolan.org (=?iso-8859-1?Q?R=E9mi?= Duraffort) Date: Mon, 28 Jun 2010 18:12:28 +0200 Subject: [vlc-devel] =?iso-8859-1?q?=5Bvlc-commits=5D_commit=3A_xspf=3A_si?= =?iso-8859-1?q?lently_skip_unknown_extension_nodes_=28fix_=233696?= =?iso-8859-1?q?=29_=28_R=E9mi_Duraffort_=29?= In-Reply-To: <201006280020.01794.rem@videolan.org> References: <20100627180808.C17ECFBB9C@albiero.videolan.org> <201006280020.01794.rem@videolan.org> Message-ID: <20100628161228.GA5841@dinauz.org> Le lundi 28 juin 2010 ? 12:20:01, R?mi Denis-Courmont a ?crit : > On Sunday 27 June 2010 21:08:08 git at videolan.org, you wrote: > > + /* Skip all children */ > > + while( xml_ReaderRead( p_xml_reader ) == 1 ) > > + { > > + if( xml_ReaderNodeType( p_xml_reader ) == > > XML_READER_ENDELEM ) + { > > + char *psz_name = xml_ReaderName( p_xml_reader ); > > + if( !strcmp( psz_name, "extension" ) ) > > What if you have nested tags? I would assume libxml provides a > saner way to skip the content of a tag. The code only skip the nested tag. So no problem with nested and non-nested tags. Best regards -- R?mi Duraffort | ivoire From dilaroga at gmail.com Mon Jun 28 20:08:32 2010 From: dilaroga at gmail.com (Sebastien Zwickert) Date: Mon, 28 Jun 2010 20:08:32 +0200 Subject: [vlc-devel] [PATCH] MacOS: fixes an issue with the recents item that doesn't list the opened media... Message-ID: Hi, In attachment a patch for 1.1.1 branch that fixes an issue (recents item menu is not filled). -- Sebastien Zwickert -------------- next part -------------- A non-text attachment was scrubbed... Name: 0001-MacOS-fixes-an-issue-with-the-recents-item-that-doe.patch Type: application/octet-stream Size: 925 bytes Desc: not available URL: -------------- next part -------------- From rafael.carre at gmail.com Mon Jun 28 23:01:40 2010 From: rafael.carre at gmail.com (=?UTF-8?q?Rafa=C3=ABl=20Carr=C3=A9?=) Date: Mon, 28 Jun 2010 23:01:40 +0200 Subject: [vlc-devel] [PATCH] Remove chroma conversions already handled by swscale Message-ID: <1277758900-25111-1-git-send-email-rafael.carre@gmail.com> Require libswscale >= 0.5.0 in configure.ac Remaining chromas unknown to libswscale: - YVYU : Packed YUV 4:2:2, Y:V:Y:U - IUYV : ? - CYUV : 10-bit 4:2:2 Component YCbCr - Y211 : Packed YUV 2:1:1, Y:U:Y:V Should be possible to add to libswscale chroma converter: - YUVA : Palettized RGB with palette element R:G:B Briefly tested against a couple of movies, MMX and SSE2 modules still build I made no speed comparison Deleted files (the diff would be too big): modules/mmx/i420_rgb_mmx.h modules/video_chroma/ - grey_yuv.c - i420_rgb.c - i420_rgb.h - i420_rgb16.c - i420_rgb8.c - i420_rgb_c.h --- configure.ac | 8 +- modules/mmx/Modules.am | 10 - modules/sse2/Modules.am | 10 - modules/video_chroma/Modules.am | 14 -- modules/video_chroma/i420_yuy2.c | 445 +------------------------------------- modules/video_chroma/i422_i420.c | 46 +---- modules/video_chroma/i422_yuy2.c | 205 +----------------- modules/video_chroma/i422_yuy2.h | 87 -------- modules/video_chroma/yuy2_i420.c | 152 +------------- modules/video_chroma/yuy2_i422.c | 104 +--------- modules/video_filter/swscale.c | 19 +-- 11 files changed, 16 insertions(+), 1084 deletions(-) diff --git a/configure.ac b/configure.ac index 1a428e7..90a4b69 100644 --- a/configure.ac +++ b/configure.ac @@ -227,7 +227,7 @@ case "${host_os}" in LDFLAGS_save="${LDFLAGS_save} -Wl,-headerpad_max_install_names ${ARCH_flag}"; LDFLAGS="${LDFLAGS_save}" VLC_ADD_LDFLAGS([mkv mp4 motion], [-Wl,-framework,IOKit,-framework,CoreFoundation]) VLC_ADD_LDFLAGS([libvlc vlc],[-Wl,-undefined,dynamic_lookup]) - VLC_ADD_LDFLAGS([avcodec avformat access_avio swscale postproc i420_rgb_mmx x264],[-Wl,-read_only_relocs,suppress]) + VLC_ADD_LDFLAGS([avcodec avformat access_avio swscale postproc],[-Wl,-read_only_relocs,suppress]) VLC_ADD_CFLAGS([motion],[-fconstant-cfstrings]) VLC_ADD_LDFLAGS([libvlccore],[-Wl,-framework,CoreFoundation]) AC_ARG_ENABLE(macosx-defaults, @@ -662,7 +662,7 @@ AC_CHECK_LIB(m,cos,[ VLC_ADD_LIBS([adjust wave ripple psychedelic gradient a52tofloat32 dtstofloat32 x264 goom visual panoramix rotate noise grain scene kate flac lua chorus_flanger],[-lm]) ]) AC_CHECK_LIB(m,pow,[ - VLC_ADD_LIBS([avcodec avformat access_avio swscale postproc ffmpegaltivec i420_rgb faad twolame equalizer spatializer param_eq libvlccore freetype mod mpc dmo quicktime realvideo qt4],[-lm]) + VLC_ADD_LIBS([avcodec avformat access_avio swscale postproc ffmpegaltivec faad twolame equalizer spatializer param_eq libvlccore freetype mod mpc dmo quicktime realvideo qt4],[-lm]) ]) AC_CHECK_LIB(m,sqrt,[ VLC_ADD_LIBS([headphone_channel_mixer normvol audiobargraph_a speex mono colorthres extract ball],[-lm]) @@ -2791,7 +2791,7 @@ AC_ARG_ENABLE(swscale, (default enabled)])) if test "${enable_swscale}" != "no" then - PKG_CHECK_MODULES(SWSCALE,[libswscale], + PKG_CHECK_MODULES(SWSCALE, libswscale >= 0.5.0 , [ VLC_SAVE_FLAGS CPPFLAGS="${CPPFLAGS} ${SWSCALE_CFLAGS}" @@ -2802,7 +2802,7 @@ then VLC_ADD_CFLAGS([swscale],[$SWSCALE_CFLAGS]) VLC_RESTORE_FLAGS ],[ - AC_MSG_ERROR([Could not find libswscale. Use --disable-swscale to ignore this error. Proper software scaling and some video chroma conversion will be missing.]) + AC_MSG_ERROR([Could not find libswscale. Use --disable-swscale to ignore this error. Proper software scaling and video chroma conversion will be missing.]) ]) fi diff --git a/modules/mmx/Modules.am b/modules/mmx/Modules.am index b2d4b11..d3a1f35 100644 --- a/modules/mmx/Modules.am +++ b/modules/mmx/Modules.am @@ -5,15 +5,6 @@ libmemcpymmx_plugin_la_CFLAGS = $(AM_CFLAGS) libmemcpymmx_plugin_la_LIBADD = $(AM_LIBADD) libmemcpymmx_plugin_la_DEPENDENCIES = -libi420_rgb_mmx_plugin_la_SOURCES = \ - ../video_chroma/i420_rgb.c \ - ../video_chroma/i420_rgb.h \ - ../video_chroma/i420_rgb16.c \ - i420_rgb_mmx.h -libi420_rgb_mmx_plugin_la_CFLAGS = $(AM_CFLAGS) -libi420_rgb_mmx_plugin_la_LIBADD = $(AM_LIBADD) -libi420_rgb_mmx_plugin_la_DEPENDENCIES = - libi420_yuy2_mmx_plugin_la_SOURCES = \ ../video_chroma/i420_yuy2.c \ ../video_chroma/i420_yuy2.h @@ -30,7 +21,6 @@ libi422_yuy2_mmx_plugin_la_DEPENDENCIES = libvlc_LTLIBRARIES += \ libmemcpymmx_plugin.la \ - libi420_rgb_mmx_plugin.la \ libi420_yuy2_mmx_plugin.la \ libi422_yuy2_mmx_plugin.la \ $(NULL) diff --git a/modules/sse2/Modules.am b/modules/sse2/Modules.am index 899634b..06be65b 100644 --- a/modules/sse2/Modules.am +++ b/modules/sse2/Modules.am @@ -1,14 +1,5 @@ AM_CFLAGS += $(SSE2_CFLAGS) -libi420_rgb_sse2_plugin_la_SOURCES = \ - ../video_chroma/i420_rgb.c \ - ../video_chroma/i420_rgb.h \ - ../video_chroma/i420_rgb16.c \ - ../mmx/i420_rgb_mmx.h -libi420_rgb_sse2_plugin_la_CFLAGS = $(AM_CFLAGS) -libi420_rgb_sse2_plugin_la_LIBADD = $(AM_LIBADD) -libi420_rgb_sse2_plugin_la_DEPENDENCIES = - libi420_yuy2_sse2_plugin_la_SOURCES = \ ../video_chroma/i420_yuy2.c \ ../video_chroma/i420_yuy2.h @@ -24,7 +15,6 @@ libi422_yuy2_sse2_plugin_la_LIBADD = $(AM_LIBADD) libi422_yuy2_sse2_plugin_la_DEPENDENCIES = libvlc_LTLIBRARIES += \ - libi420_rgb_sse2_plugin.la \ libi420_yuy2_sse2_plugin.la \ libi422_yuy2_sse2_plugin.la \ $(NULL) diff --git a/modules/video_chroma/Modules.am b/modules/video_chroma/Modules.am index 32f965f..4553517 100644 --- a/modules/video_chroma/Modules.am +++ b/modules/video_chroma/Modules.am @@ -1,11 +1,3 @@ -SOURCES_i420_rgb = \ - i420_rgb.c \ - i420_rgb.h \ - i420_rgb8.c \ - i420_rgb16.c \ - i420_rgb_c.h \ - $(NULL) - SOURCES_i420_yuy2 = \ i420_yuy2.c \ i420_yuy2.h \ @@ -20,10 +12,6 @@ SOURCES_i422_i420 = \ i422_i420.c \ $(NULL) -SOURCES_grey_yuv = \ - grey_yuv.c \ - $(NULL) - SOURCES_yuy2_i422 = \ yuy2_i422.c \ $(NULL) @@ -33,11 +21,9 @@ SOURCES_yuy2_i420 = \ $(NULL) libvlc_LTLIBRARIES += \ - libi420_rgb_plugin.la \ libi420_yuy2_plugin.la \ libi422_i420_plugin.la \ libi422_yuy2_plugin.la \ - libgrey_yuv_plugin.la \ libyuy2_i420_plugin.la \ libyuy2_i422_plugin.la \ $(NULL) diff --git a/modules/video_chroma/i420_yuy2.c b/modules/video_chroma/i420_yuy2.c index 57a7af6..880c3e9 100644 --- a/modules/video_chroma/i420_yuy2.c +++ b/modules/video_chroma/i420_yuy2.c @@ -43,13 +43,13 @@ #define SRC_FOURCC "I420,IYUV,YV12" #if defined (MODULE_NAME_IS_i420_yuy2) -# define DEST_FOURCC "YUY2,YUNV,YVYU,UYVY,UYNV,Y422,IUYV,cyuv,Y211" +# define DEST_FOURCC "YUNV,YVYU,UYNV,Y422,IUYV,cyuv,Y211" #elif defined (MODULE_NAME_IS_i420_yuy2_mmx) -# define DEST_FOURCC "YUY2,YUNV,YVYU,UYVY,UYNV,Y422,IUYV,cyuv" +# define DEST_FOURCC "YUNV,YVYU,UYNV,Y422,IUYV,cyuv" #elif defined (MODULE_NAME_IS_i420_yuy2_sse2) -# define DEST_FOURCC "YUY2,YUNV,YVYU,UYVY,UYNV,Y422,IUYV,cyuv" +# define DEST_FOURCC "YUNV,YVYU,UYNV,Y422,IUYV,cyuv" #elif defined (MODULE_NAME_IS_i420_yuy2_altivec) -# define DEST_FOURCC "YUY2,YUNV,YVYU,UYVY,UYNV,Y422" +# define DEST_FOURCC "YUNV,YVYU,UYNV,Y422" #endif /***************************************************************************** @@ -57,12 +57,8 @@ *****************************************************************************/ static int Activate ( vlc_object_t * ); -static void I420_YUY2 ( filter_t *, picture_t *, picture_t * ); static void I420_YVYU ( filter_t *, picture_t *, picture_t * ); -static void I420_UYVY ( filter_t *, picture_t *, picture_t * ); -static picture_t *I420_YUY2_Filter ( filter_t *, picture_t * ); static picture_t *I420_YVYU_Filter ( filter_t *, picture_t * ); -static picture_t *I420_UYVY_Filter ( filter_t *, picture_t * ); #if !defined (MODULE_NAME_IS_i420_yuy2_altivec) static void I420_IUYV ( filter_t *, picture_t *, picture_t * ); static void I420_cyuv ( filter_t *, picture_t *, picture_t * ); @@ -126,17 +122,9 @@ static int Activate( vlc_object_t *p_this ) case VLC_CODEC_I420: switch( p_filter->fmt_out.video.i_chroma ) { - case VLC_CODEC_YUYV: - p_filter->pf_video_filter = I420_YUY2_Filter; - break; - case VLC_CODEC_YVYU: p_filter->pf_video_filter = I420_YVYU_Filter; break; - - case VLC_CODEC_UYVY: - p_filter->pf_video_filter = I420_UYVY_Filter; - break; #if !defined (MODULE_NAME_IS_i420_yuy2_altivec) case VLC_FOURCC('I','U','Y','V'): p_filter->pf_video_filter = I420_IUYV_Filter; @@ -177,9 +165,7 @@ static inline unsigned long long read_cycles(void) /* Following functions are local */ -VIDEO_FILTER_WRAPPER( I420_YUY2 ) VIDEO_FILTER_WRAPPER( I420_YVYU ) -VIDEO_FILTER_WRAPPER( I420_UYVY ) #if !defined (MODULE_NAME_IS_i420_yuy2_altivec) VIDEO_FILTER_WRAPPER( I420_IUYV ) VIDEO_FILTER_WRAPPER( I420_cyuv ) @@ -189,220 +175,6 @@ VIDEO_FILTER_WRAPPER( I420_Y211 ) #endif /***************************************************************************** - * I420_YUY2: planar YUV 4:2:0 to packed YUYV 4:2:2 - *****************************************************************************/ -static void I420_YUY2( filter_t *p_filter, picture_t *p_source, - picture_t *p_dest ) -{ - uint8_t *p_line1, *p_line2 = p_dest->p->p_pixels; - uint8_t *p_y1, *p_y2 = p_source->Y_PIXELS; - uint8_t *p_u = p_source->U_PIXELS; - uint8_t *p_v = p_source->V_PIXELS; - - int i_x, i_y; - -#if defined (MODULE_NAME_IS_i420_yuy2_altivec) -#define VEC_NEXT_LINES( ) \ - p_line1 = p_line2; \ - p_line2 += p_dest->p->i_pitch; \ - p_y1 = p_y2; \ - p_y2 += p_source->p[Y_PLANE].i_pitch; - -#define VEC_LOAD_UV( ) \ - u_vec = vec_ld( 0, p_u ); p_u += 16; \ - v_vec = vec_ld( 0, p_v ); p_v += 16; - -#define VEC_MERGE( a ) \ - uv_vec = a( u_vec, v_vec ); \ - y_vec = vec_ld( 0, p_y1 ); p_y1 += 16; \ - vec_st( vec_mergeh( y_vec, uv_vec ), 0, p_line1 ); p_line1 += 16; \ - vec_st( vec_mergel( y_vec, uv_vec ), 0, p_line1 ); p_line1 += 16; \ - y_vec = vec_ld( 0, p_y2 ); p_y2 += 16; \ - vec_st( vec_mergeh( y_vec, uv_vec ), 0, p_line2 ); p_line2 += 16; \ - vec_st( vec_mergel( y_vec, uv_vec ), 0, p_line2 ); p_line2 += 16; - - vector unsigned char u_vec; - vector unsigned char v_vec; - vector unsigned char uv_vec; - vector unsigned char y_vec; - - if( !( ( p_filter->fmt_in.video.i_width % 32 ) | - ( p_filter->fmt_in.video.i_height % 2 ) ) ) - { - /* Width is a multiple of 32, we take 2 lines at a time */ - for( i_y = p_filter->fmt_in.video.i_height / 2 ; i_y-- ; ) - { - VEC_NEXT_LINES( ); - for( i_x = p_filter->fmt_in.video.i_width / 32 ; i_x-- ; ) - { - VEC_LOAD_UV( ); - VEC_MERGE( vec_mergeh ); - VEC_MERGE( vec_mergel ); - } - } - } - else if( !( ( p_filter->fmt_in.video.i_width % 16 ) | - ( p_filter->fmt_in.video.i_height % 4 ) ) ) - { - /* Width is only a multiple of 16, we take 4 lines at a time */ - for( i_y = p_filter->fmt_in.video.i_height / 4 ; i_y-- ; ) - { - /* Line 1 and 2, pixels 0 to ( width - 16 ) */ - VEC_NEXT_LINES( ); - for( i_x = p_filter->fmt_in.video.i_width / 32 ; i_x-- ; ) - { - VEC_LOAD_UV( ); - VEC_MERGE( vec_mergeh ); - VEC_MERGE( vec_mergel ); - } - - /* Line 1 and 2, pixels ( width - 16 ) to ( width ) */ - VEC_LOAD_UV( ); - VEC_MERGE( vec_mergeh ); - - /* Line 3 and 4, pixels 0 to 16 */ - VEC_NEXT_LINES( ); - VEC_MERGE( vec_mergel ); - - /* Line 3 and 4, pixels 16 to ( width ) */ - for( i_x = p_filter->fmt_in.video.i_width / 32 ; i_x-- ; ) - { - VEC_LOAD_UV( ); - VEC_MERGE( vec_mergeh ); - VEC_MERGE( vec_mergel ); - } - } - } - else - { - /* Crap, use the C version */ -#undef VEC_NEXT_LINES -#undef VEC_LOAD_UV -#undef VEC_MERGE -#endif - - const int i_source_margin = p_source->p[0].i_pitch - - p_source->p[0].i_visible_pitch; - const int i_source_margin_c = p_source->p[1].i_pitch - - p_source->p[1].i_visible_pitch; - const int i_dest_margin = p_dest->p->i_pitch - - p_dest->p->i_visible_pitch; - -#if !defined(MODULE_NAME_IS_i420_yuy2_sse2) - for( i_y = p_filter->fmt_in.video.i_height / 2 ; i_y-- ; ) - { - p_line1 = p_line2; - p_line2 += p_dest->p->i_pitch; - - p_y1 = p_y2; - p_y2 += p_source->p[Y_PLANE].i_pitch; - -#if !defined (MODULE_NAME_IS_i420_yuy2_mmx) - for( i_x = p_filter->fmt_in.video.i_width / 8; i_x-- ; ) - { - C_YUV420_YUYV( ); - C_YUV420_YUYV( ); - C_YUV420_YUYV( ); - C_YUV420_YUYV( ); - } -#else - for( i_x = p_filter->fmt_in.video.i_width / 8 ; i_x-- ; ) - { - MMX_CALL( MMX_YUV420_YUYV ); - } -#endif - for( i_x = ( p_filter->fmt_in.video.i_width % 8 ) / 2; i_x-- ; ) - { - C_YUV420_YUYV( ); - } - - p_y1 += i_source_margin; - p_y2 += i_source_margin; - p_u += i_source_margin_c; - p_v += i_source_margin_c; - p_line1 += i_dest_margin; - p_line2 += i_dest_margin; - } - -#if defined (MODULE_NAME_IS_i420_yuy2_mmx) - /* re-enable FPU registers */ - MMX_END; -#endif - -#if defined (MODULE_NAME_IS_i420_yuy2_altivec) - } -#endif - -#else // defined(MODULE_NAME_IS_i420_yuy2_sse2) - /* - ** SSE2 128 bits fetch/store instructions are faster - ** if memory access is 16 bytes aligned - */ - - if( 0 == (15 & (p_source->p[Y_PLANE].i_pitch|p_dest->p->i_pitch| - ((intptr_t)p_line2|(intptr_t)p_y2))) ) - { - /* use faster SSE2 aligned fetch and store */ - for( i_y = p_filter->fmt_in.video.i_height / 2 ; i_y-- ; ) - { - p_line1 = p_line2; - p_line2 += p_dest->p->i_pitch; - - p_y1 = p_y2; - p_y2 += p_source->p[Y_PLANE].i_pitch; - - for( i_x = p_filter->fmt_in.video.i_width / 16 ; i_x-- ; ) - { - SSE2_CALL( SSE2_YUV420_YUYV_ALIGNED ); - } - for( i_x = ( p_filter->fmt_in.video.i_width % 16 ) / 2; i_x-- ; ) - { - C_YUV420_YUYV( ); - } - - p_y1 += i_source_margin; - p_y2 += i_source_margin; - p_u += i_source_margin_c; - p_v += i_source_margin_c; - p_line1 += i_dest_margin; - p_line2 += i_dest_margin; - } - } - else - { - /* use slower SSE2 unaligned fetch and store */ - for( i_y = p_filter->fmt_in.video.i_height / 2 ; i_y-- ; ) - { - p_line1 = p_line2; - p_line2 += p_dest->p->i_pitch; - - p_y1 = p_y2; - p_y2 += p_source->p[Y_PLANE].i_pitch; - - for( i_x = p_filter->fmt_in.video.i_width / 16 ; i_x-- ; ) - { - SSE2_CALL( SSE2_YUV420_YUYV_UNALIGNED ); - } - for( i_x = ( p_filter->fmt_in.video.i_width % 16 ) / 2; i_x-- ; ) - { - C_YUV420_YUYV( ); - } - - p_y1 += i_source_margin; - p_y2 += i_source_margin; - p_u += i_source_margin_c; - p_v += i_source_margin_c; - p_line1 += i_dest_margin; - p_line2 += i_dest_margin; - } - } - /* make sure all SSE2 stores are visible thereafter */ - SSE2_END; - -#endif // defined(MODULE_NAME_IS_i420_yuy2_sse2) -} - -/***************************************************************************** * I420_YVYU: planar YUV 4:2:0 to packed YVYU 4:2:2 *****************************************************************************/ static void I420_YVYU( filter_t *p_filter, picture_t *p_source, @@ -611,215 +383,6 @@ static void I420_YVYU( filter_t *p_filter, picture_t *p_source, #endif // defined(MODULE_NAME_IS_i420_yuy2_sse2) } -/***************************************************************************** - * I420_UYVY: planar YUV 4:2:0 to packed UYVY 4:2:2 - *****************************************************************************/ -static void I420_UYVY( filter_t *p_filter, picture_t *p_source, - picture_t *p_dest ) -{ - uint8_t *p_line1, *p_line2 = p_dest->p->p_pixels; - uint8_t *p_y1, *p_y2 = p_source->Y_PIXELS; - uint8_t *p_u = p_source->U_PIXELS; - uint8_t *p_v = p_source->V_PIXELS; - - int i_x, i_y; - -#if defined (MODULE_NAME_IS_i420_yuy2_altivec) -#define VEC_NEXT_LINES( ) \ - p_line1 = p_line2; \ - p_line2 += p_dest->p->i_pitch; \ - p_y1 = p_y2; \ - p_y2 += p_source->p[Y_PLANE].i_pitch; - -#define VEC_LOAD_UV( ) \ - u_vec = vec_ld( 0, p_u ); p_u += 16; \ - v_vec = vec_ld( 0, p_v ); p_v += 16; - -#define VEC_MERGE( a ) \ - uv_vec = a( u_vec, v_vec ); \ - y_vec = vec_ld( 0, p_y1 ); p_y1 += 16; \ - vec_st( vec_mergeh( uv_vec, y_vec ), 0, p_line1 ); p_line1 += 16; \ - vec_st( vec_mergel( uv_vec, y_vec ), 0, p_line1 ); p_line1 += 16; \ - y_vec = vec_ld( 0, p_y2 ); p_y2 += 16; \ - vec_st( vec_mergeh( uv_vec, y_vec ), 0, p_line2 ); p_line2 += 16; \ - vec_st( vec_mergel( uv_vec, y_vec ), 0, p_line2 ); p_line2 += 16; - - vector unsigned char u_vec; - vector unsigned char v_vec; - vector unsigned char uv_vec; - vector unsigned char y_vec; - - if( !( ( p_filter->fmt_in.video.i_width % 32 ) | - ( p_filter->fmt_in.video.i_height % 2 ) ) ) - { - /* Width is a multiple of 32, we take 2 lines at a time */ - for( i_y = p_filter->fmt_in.video.i_height / 2 ; i_y-- ; ) - { - VEC_NEXT_LINES( ); - for( i_x = p_filter->fmt_in.video.i_width / 32 ; i_x-- ; ) - { - VEC_LOAD_UV( ); - VEC_MERGE( vec_mergeh ); - VEC_MERGE( vec_mergel ); - } - } - } - else if( !( ( p_filter->fmt_in.video.i_width % 16 ) | - ( p_filter->fmt_in.video.i_height % 4 ) ) ) - { - /* Width is only a multiple of 16, we take 4 lines at a time */ - for( i_y = p_filter->fmt_in.video.i_height / 4 ; i_y-- ; ) - { - /* Line 1 and 2, pixels 0 to ( width - 16 ) */ - VEC_NEXT_LINES( ); - for( i_x = p_filter->fmt_in.video.i_width / 32 ; i_x-- ; ) - { - VEC_LOAD_UV( ); - VEC_MERGE( vec_mergeh ); - VEC_MERGE( vec_mergel ); - } - - /* Line 1 and 2, pixels ( width - 16 ) to ( width ) */ - VEC_LOAD_UV( ); - VEC_MERGE( vec_mergeh ); - - /* Line 3 and 4, pixels 0 to 16 */ - VEC_NEXT_LINES( ); - VEC_MERGE( vec_mergel ); - - /* Line 3 and 4, pixels 16 to ( width ) */ - for( i_x = p_filter->fmt_in.video.i_width / 32 ; i_x-- ; ) - { - VEC_LOAD_UV( ); - VEC_MERGE( vec_mergeh ); - VEC_MERGE( vec_mergel ); - } - } - } - else - { - /* Crap, use the C version */ -#undef VEC_NEXT_LINES -#undef VEC_LOAD_UV -#undef VEC_MERGE -#endif - - const int i_source_margin = p_source->p[0].i_pitch - - p_source->p[0].i_visible_pitch; - const int i_source_margin_c = p_source->p[1].i_pitch - - p_source->p[1].i_visible_pitch; - const int i_dest_margin = p_dest->p->i_pitch - - p_dest->p->i_visible_pitch; - -#if !defined(MODULE_NAME_IS_i420_yuy2_sse2) - for( i_y = p_filter->fmt_in.video.i_height / 2 ; i_y-- ; ) - { - p_line1 = p_line2; - p_line2 += p_dest->p->i_pitch; - - p_y1 = p_y2; - p_y2 += p_source->p[Y_PLANE].i_pitch; - - for( i_x = p_filter->fmt_in.video.i_width / 8 ; i_x-- ; ) - { -#if !defined (MODULE_NAME_IS_i420_yuy2_mmx) - C_YUV420_UYVY( ); - C_YUV420_UYVY( ); - C_YUV420_UYVY( ); - C_YUV420_UYVY( ); -#else - MMX_CALL( MMX_YUV420_UYVY ); -#endif - } - for( i_x = ( p_filter->fmt_in.video.i_width % 8 ) / 2; i_x--; ) - { - C_YUV420_UYVY( ); - } - - p_y1 += i_source_margin; - p_y2 += i_source_margin; - p_u += i_source_margin_c; - p_v += i_source_margin_c; - p_line1 += i_dest_margin; - p_line2 += i_dest_margin; - } - -#if defined (MODULE_NAME_IS_i420_yuy2_mmx) - /* re-enable FPU registers */ - MMX_END; -#endif - -#if defined (MODULE_NAME_IS_i420_yuy2_altivec) - } -#endif - -#else // defined(MODULE_NAME_IS_i420_yuy2_sse2) - /* - ** SSE2 128 bits fetch/store instructions are faster - ** if memory access is 16 bytes aligned - */ - if( 0 == (15 & (p_source->p[Y_PLANE].i_pitch|p_dest->p->i_pitch| - ((intptr_t)p_line2|(intptr_t)p_y2))) ) - { - /* use faster SSE2 aligned fetch and store */ - for( i_y = p_filter->fmt_in.video.i_height / 2 ; i_y-- ; ) - { - p_line1 = p_line2; - p_line2 += p_dest->p->i_pitch; - - p_y1 = p_y2; - p_y2 += p_source->p[Y_PLANE].i_pitch; - - for( i_x = p_filter->fmt_in.video.i_width / 16 ; i_x-- ; ) - { - SSE2_CALL( SSE2_YUV420_UYVY_ALIGNED ); - } - for( i_x = ( p_filter->fmt_in.video.i_width % 16 ) / 2; i_x-- ; ) - { - C_YUV420_UYVY( ); - } - - p_y1 += i_source_margin; - p_y2 += i_source_margin; - p_u += i_source_margin_c; - p_v += i_source_margin_c; - p_line1 += i_dest_margin; - p_line2 += i_dest_margin; - } - } - else - { - /* use slower SSE2 unaligned fetch and store */ - for( i_y = p_filter->fmt_in.video.i_height / 2 ; i_y-- ; ) - { - p_line1 = p_line2; - p_line2 += p_dest->p->i_pitch; - - p_y1 = p_y2; - p_y2 += p_source->p[Y_PLANE].i_pitch; - - for( i_x = p_filter->fmt_in.video.i_width / 16 ; i_x-- ; ) - { - SSE2_CALL( SSE2_YUV420_UYVY_UNALIGNED ); - } - for( i_x = ( p_filter->fmt_in.video.i_width % 16 ) / 2; i_x-- ; ) - { - C_YUV420_UYVY( ); - } - - p_y1 += i_source_margin; - p_y2 += i_source_margin; - p_u += i_source_margin_c; - p_v += i_source_margin_c; - p_line1 += i_dest_margin; - p_line2 += i_dest_margin; - } - } - /* make sure all SSE2 stores are visible thereafter */ - SSE2_END; -#endif // defined(MODULE_NAME_IS_i420_yuy2_sse2) -} - #if !defined (MODULE_NAME_IS_i420_yuy2_altivec) /***************************************************************************** * I420_IUYV: planar YUV 4:2:0 to interleaved packed UYVY 4:2:2 diff --git a/modules/video_chroma/i422_i420.c b/modules/video_chroma/i422_i420.c index c929167..9efd85e 100644 --- a/modules/video_chroma/i422_i420.c +++ b/modules/video_chroma/i422_i420.c @@ -35,18 +35,14 @@ #include #define SRC_FOURCC "I422,J422" -#define DEST_FOURCC "I420,IYUV,J420,YV12,YUVA" +#define DEST_FOURCC "YUVA" /***************************************************************************** * Local and extern prototypes. *****************************************************************************/ static int Activate ( vlc_object_t * ); -static void I422_I420( filter_t *, picture_t *, picture_t * ); -static void I422_YV12( filter_t *, picture_t *, picture_t * ); static void I422_YUVA( filter_t *, picture_t *, picture_t * ); -static picture_t *I422_I420_Filter( filter_t *, picture_t * ); -static picture_t *I422_YV12_Filter( filter_t *, picture_t * ); static picture_t *I422_YUVA_Filter( filter_t *, picture_t * ); /***************************************************************************** @@ -83,15 +79,6 @@ static int Activate( vlc_object_t *p_this ) case VLC_CODEC_J422: switch( p_filter->fmt_out.video.i_chroma ) { - case VLC_CODEC_I420: - case VLC_CODEC_J420: - p_filter->pf_video_filter = I422_I420_Filter; - break; - - case VLC_CODEC_YV12: - p_filter->pf_video_filter = I422_YV12_Filter; - break; - case VLC_CODEC_YUVA: p_filter->pf_video_filter = I422_YUVA_Filter; break; @@ -108,8 +95,6 @@ static int Activate( vlc_object_t *p_this ) } /* Following functions are local */ -VIDEO_FILTER_WRAPPER( I422_I420 ) -VIDEO_FILTER_WRAPPER( I422_YV12 ) VIDEO_FILTER_WRAPPER( I422_YUVA ) /***************************************************************************** @@ -142,35 +127,6 @@ static void I422_I420( filter_t *p_filter, picture_t *p_source, } /***************************************************************************** - * I422_YV12: planar YUV 4:2:2 to planar YV12 4:2:0 Y:V:U - *****************************************************************************/ -static void I422_YV12( filter_t *p_filter, picture_t *p_source, - picture_t *p_dest ) -{ - uint16_t i_dpy = p_dest->p[Y_PLANE].i_pitch; - uint16_t i_spy = p_source->p[Y_PLANE].i_pitch; - uint16_t i_dpuv = p_dest->p[U_PLANE].i_pitch; - uint16_t i_spuv = p_source->p[U_PLANE].i_pitch; - uint16_t i_width = p_filter->fmt_in.video.i_width; - uint16_t i_y = p_filter->fmt_in.video.i_height; - uint8_t *p_dy = p_dest->Y_PIXELS + (i_y-1)*i_dpy; - uint8_t *p_y = p_source->Y_PIXELS + (i_y-1)*i_spy; - uint8_t *p_du = p_dest->V_PIXELS + (i_y/2-1)*i_dpuv; /* U and V are swapped */ - uint8_t *p_u = p_source->U_PIXELS + (i_y-1)*i_spuv; - uint8_t *p_dv = p_dest->U_PIXELS + (i_y/2-1)*i_dpuv; /* U and V are swapped */ - uint8_t *p_v = p_source->V_PIXELS + (i_y-1)*i_spuv; - i_y /= 2; - - for ( ; i_y--; ) - { - vlc_memcpy(p_dy, p_y, i_width); p_dy -= i_dpy; p_y -= i_spy; - vlc_memcpy(p_dy, p_y, i_width); p_dy -= i_dpy; p_y -= i_spy; - vlc_memcpy(p_du, p_u, i_width/2); p_du -= i_dpuv; p_u -= 2*i_spuv; - vlc_memcpy(p_dv, p_v, i_width/2); p_dv -= i_dpuv; p_v -= 2*i_spuv; - } -} - -/***************************************************************************** * I422_YUVA: planar YUV 4:2:2 to planar YUVA 4:2:0:4 Y:U:V:A *****************************************************************************/ static void I422_YUVA( filter_t *p_filter, picture_t *p_source, diff --git a/modules/video_chroma/i422_yuy2.c b/modules/video_chroma/i422_yuy2.c index fc426ff..32c8490 100644 --- a/modules/video_chroma/i422_yuy2.c +++ b/modules/video_chroma/i422_yuy2.c @@ -38,9 +38,9 @@ #define SRC_FOURCC "I422" #if defined (MODULE_NAME_IS_i422_yuy2) -# define DEST_FOURCC "YUY2,YUNV,YVYU,UYVY,UYNV,Y422,IUYV,cyuv,Y211" +# define DEST_FOURCC "YVYU,IUYV,cyuv,Y211" #else -# define DEST_FOURCC "YUY2,YUNV,YVYU,UYVY,UYNV,Y422,IUYV,cyuv" +# define DEST_FOURCC "YVYU,IUYV,cyuv" #endif /***************************************************************************** @@ -48,14 +48,10 @@ *****************************************************************************/ static int Activate ( vlc_object_t * ); -static void I422_YUY2 ( filter_t *, picture_t *, picture_t * ); static void I422_YVYU ( filter_t *, picture_t *, picture_t * ); -static void I422_UYVY ( filter_t *, picture_t *, picture_t * ); static void I422_IUYV ( filter_t *, picture_t *, picture_t * ); static void I422_cyuv ( filter_t *, picture_t *, picture_t * ); -static picture_t *I422_YUY2_Filter ( filter_t *, picture_t * ); static picture_t *I422_YVYU_Filter ( filter_t *, picture_t * ); -static picture_t *I422_UYVY_Filter ( filter_t *, picture_t * ); static picture_t *I422_IUYV_Filter ( filter_t *, picture_t * ); static picture_t *I422_cyuv_Filter ( filter_t *, picture_t * ); #if defined (MODULE_NAME_IS_i422_yuy2) @@ -100,18 +96,11 @@ static int Activate( vlc_object_t *p_this ) case VLC_CODEC_I422: switch( p_filter->fmt_out.video.i_chroma ) { - case VLC_CODEC_YUYV: - p_filter->pf_video_filter = I422_YUY2_Filter; - break; - case VLC_CODEC_YVYU: p_filter->pf_video_filter = I422_YVYU_Filter; break; - case VLC_CODEC_UYVY: - p_filter->pf_video_filter = I422_UYVY_Filter; - break; - + case VLC_FOURCC('I','U','Y','V'): p_filter->pf_video_filter = I422_IUYV_Filter; break; @@ -138,9 +127,7 @@ static int Activate( vlc_object_t *p_this ) /* Following functions are local */ -VIDEO_FILTER_WRAPPER( I422_YUY2 ) VIDEO_FILTER_WRAPPER( I422_YVYU ) -VIDEO_FILTER_WRAPPER( I422_UYVY ) VIDEO_FILTER_WRAPPER( I422_IUYV ) VIDEO_FILTER_WRAPPER( I422_cyuv ) #if defined (MODULE_NAME_IS_i422_yuy2) @@ -148,99 +135,6 @@ VIDEO_FILTER_WRAPPER( I422_Y211 ) #endif /***************************************************************************** - * I422_YUY2: planar YUV 4:2:2 to packed YUY2 4:2:2 - *****************************************************************************/ -static void I422_YUY2( filter_t *p_filter, picture_t *p_source, - picture_t *p_dest ) -{ - uint8_t *p_line = p_dest->p->p_pixels; - uint8_t *p_y = p_source->Y_PIXELS; - uint8_t *p_u = p_source->U_PIXELS; - uint8_t *p_v = p_source->V_PIXELS; - - int i_x, i_y; - - const int i_source_margin = p_source->p[0].i_pitch - - p_source->p[0].i_visible_pitch; - const int i_source_margin_c = p_source->p[1].i_pitch - - p_source->p[1].i_visible_pitch; - const int i_dest_margin = p_dest->p->i_pitch - - p_dest->p->i_visible_pitch; - -#if defined (MODULE_NAME_IS_i422_yuy2_sse2) - - if( 0 == (15 & (p_source->p[Y_PLANE].i_pitch|p_dest->p->i_pitch| - ((intptr_t)p_line|(intptr_t)p_y))) ) - { - /* use faster SSE2 aligned fetch and store */ - for( i_y = p_filter->fmt_in.video.i_height ; i_y-- ; ) - { - for( i_x = p_filter->fmt_in.video.i_width / 16 ; i_x-- ; ) - { - SSE2_CALL( SSE2_YUV422_YUYV_ALIGNED ); - } - for( i_x = ( p_filter->fmt_in.video.i_width % 16 ) / 2; i_x-- ; ) - { - C_YUV422_YUYV( p_line, p_y, p_u, p_v ); - } - p_y += i_source_margin; - p_u += i_source_margin_c; - p_v += i_source_margin_c; - p_line += i_dest_margin; - } - } - else { - /* use slower SSE2 unaligned fetch and store */ - for( i_y = p_filter->fmt_in.video.i_height ; i_y-- ; ) - { - for( i_x = p_filter->fmt_in.video.i_width / 16 ; i_x-- ; ) - { - SSE2_CALL( SSE2_YUV422_YUYV_UNALIGNED ); - } - for( i_x = ( p_filter->fmt_in.video.i_width % 16 ) / 2; i_x-- ; ) - { - C_YUV422_YUYV( p_line, p_y, p_u, p_v ); - } - p_y += i_source_margin; - p_u += i_source_margin_c; - p_v += i_source_margin_c; - p_line += i_dest_margin; - } - } - SSE2_END; - -#else - - for( i_y = p_filter->fmt_in.video.i_height ; i_y-- ; ) - { - for( i_x = p_filter->fmt_in.video.i_width / 8 ; i_x-- ; ) - { -#if defined (MODULE_NAME_IS_i422_yuy2) - C_YUV422_YUYV( p_line, p_y, p_u, p_v ); - C_YUV422_YUYV( p_line, p_y, p_u, p_v ); - C_YUV422_YUYV( p_line, p_y, p_u, p_v ); - C_YUV422_YUYV( p_line, p_y, p_u, p_v ); -#elif defined (MODULE_NAME_IS_i422_yuy2_mmx) - MMX_CALL( MMX_YUV422_YUYV ); -#endif - } - for( i_x = ( p_filter->fmt_in.video.i_width % 8 ) / 2; i_x-- ; ) - { - C_YUV422_YUYV( p_line, p_y, p_u, p_v ); - } - p_y += i_source_margin; - p_u += i_source_margin_c; - p_v += i_source_margin_c; - p_line += i_dest_margin; - } -#if defined (MODULE_NAME_IS_i422_yuy2_mmx) - MMX_END; -#endif - -#endif -} - -/***************************************************************************** * I422_YVYU: planar YUV 4:2:2 to packed YVYU 4:2:2 *****************************************************************************/ static void I422_YVYU( filter_t *p_filter, picture_t *p_source, @@ -334,99 +228,6 @@ static void I422_YVYU( filter_t *p_filter, picture_t *p_source, } /***************************************************************************** - * I422_UYVY: planar YUV 4:2:2 to packed UYVY 4:2:2 - *****************************************************************************/ -static void I422_UYVY( filter_t *p_filter, picture_t *p_source, - picture_t *p_dest ) -{ - uint8_t *p_line = p_dest->p->p_pixels; - uint8_t *p_y = p_source->Y_PIXELS; - uint8_t *p_u = p_source->U_PIXELS; - uint8_t *p_v = p_source->V_PIXELS; - - int i_x, i_y; - - const int i_source_margin = p_source->p[0].i_pitch - - p_source->p[0].i_visible_pitch; - const int i_source_margin_c = p_source->p[1].i_pitch - - p_source->p[1].i_visible_pitch; - const int i_dest_margin = p_dest->p->i_pitch - - p_dest->p->i_visible_pitch; - -#if defined (MODULE_NAME_IS_i422_yuy2_sse2) - - if( 0 == (15 & (p_source->p[Y_PLANE].i_pitch|p_dest->p->i_pitch| - ((intptr_t)p_line|(intptr_t)p_y))) ) - { - /* use faster SSE2 aligned fetch and store */ - for( i_y = p_filter->fmt_in.video.i_height ; i_y-- ; ) - { - for( i_x = p_filter->fmt_in.video.i_width / 16 ; i_x-- ; ) - { - SSE2_CALL( SSE2_YUV422_UYVY_ALIGNED ); - } - for( i_x = ( p_filter->fmt_in.video.i_width % 16 ) / 2; i_x-- ; ) - { - C_YUV422_UYVY( p_line, p_y, p_u, p_v ); - } - p_y += i_source_margin; - p_u += i_source_margin_c; - p_v += i_source_margin_c; - p_line += i_dest_margin; - } - } - else { - /* use slower SSE2 unaligned fetch and store */ - for( i_y = p_filter->fmt_in.video.i_height ; i_y-- ; ) - { - for( i_x = p_filter->fmt_in.video.i_width / 16 ; i_x-- ; ) - { - SSE2_CALL( SSE2_YUV422_UYVY_UNALIGNED ); - } - for( i_x = ( p_filter->fmt_in.video.i_width % 16 ) / 2; i_x-- ; ) - { - C_YUV422_UYVY( p_line, p_y, p_u, p_v ); - } - p_y += i_source_margin; - p_u += i_source_margin_c; - p_v += i_source_margin_c; - p_line += i_dest_margin; - } - } - SSE2_END; - -#else - - for( i_y = p_filter->fmt_in.video.i_height ; i_y-- ; ) - { - for( i_x = p_filter->fmt_in.video.i_width / 8 ; i_x-- ; ) - { -#if defined (MODULE_NAME_IS_i422_yuy2) - C_YUV422_UYVY( p_line, p_y, p_u, p_v ); - C_YUV422_UYVY( p_line, p_y, p_u, p_v ); - C_YUV422_UYVY( p_line, p_y, p_u, p_v ); - C_YUV422_UYVY( p_line, p_y, p_u, p_v ); -#elif defined (MODULE_NAME_IS_i422_yuy2_mmx) - MMX_CALL( MMX_YUV422_UYVY ); -#endif - } - for( i_x = ( p_filter->fmt_in.video.i_width % 8 ) / 2; i_x-- ; ) - { - C_YUV422_UYVY( p_line, p_y, p_u, p_v ); - } - p_y += i_source_margin; - p_u += i_source_margin_c; - p_v += i_source_margin_c; - p_line += i_dest_margin; - } -#if defined (MODULE_NAME_IS_i422_yuy2_mmx) - MMX_END; -#endif - -#endif -} - -/***************************************************************************** * I422_IUYV: planar YUV 4:2:2 to interleaved packed IUYV 4:2:2 *****************************************************************************/ static void I422_IUYV( filter_t *p_filter, picture_t *p_source, diff --git a/modules/video_chroma/i422_yuy2.h b/modules/video_chroma/i422_yuy2.h index 52ad7e4..d76714b 100644 --- a/modules/video_chroma/i422_yuy2.h +++ b/modules/video_chroma/i422_yuy2.h @@ -42,18 +42,6 @@ #define MMX_END __asm__ __volatile__ ( "emms" ) -#define MMX_YUV422_YUYV " \n\ -movq (%1), %%mm0 # Load 8 Y y7 y6 y5 y4 y3 y2 y1 y0 \n\ -movd (%2), %%mm1 # Load 4 Cb 00 00 00 00 u3 u2 u1 u0 \n\ -movd (%3), %%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\ -movq %%mm2, (%0) # Store low YUYV \n\ -punpckhbw %%mm1, %%mm0 # v3 y7 u3 y6 v2 y5 u2 y4 \n\ -movq %%mm0, 8(%0) # Store high YUYV \n\ -" - #define MMX_YUV422_YVYU " \n\ movq (%1), %%mm0 # Load 8 Y y7 y6 y5 y4 y3 y2 y1 y0 \n\ movd (%2), %%mm2 # Load 4 Cb 00 00 00 00 u3 u2 u1 u0 \n\ @@ -97,17 +85,6 @@ movq %%mm1, 8(%0) # Store high UYVY \n\ #define MMX_END _mm_empty() -#define MMX_YUV422_YUYV \ - mm0 = (__m64)*(uint64_t*)p_y; \ - mm1 = _mm_cvtsi32_si64(*(int*)p_u); \ - mm2 = _mm_cvtsi32_si64(*(int*)p_v); \ - mm1 = _mm_unpacklo_pi8(mm1, mm2); \ - mm2 = mm0; \ - mm2 = _mm_unpacklo_pi8(mm2, mm1); \ - *(uint64_t*)p_line = (uint64_t)mm2; \ - mm0 = _mm_unpackhi_pi8(mm0, mm1); \ - *(uint64_t*)(p_line+8) = (uint64_t)mm0; - #define MMX_YUV422_YVYU \ mm0 = (__m64)*(uint64_t*)p_y; \ mm2 = _mm_cvtsi32_si64(*(int*)p_u); \ @@ -119,17 +96,6 @@ movq %%mm1, 8(%0) # Store high UYVY \n\ mm0 = _mm_unpackhi_pi8(mm0, mm1); \ *(uint64_t*)(p_line+8) = (uint64_t)mm0; -#define MMX_YUV422_UYVY \ - mm0 = (__m64)*(uint64_t*)p_y; \ - mm1 = _mm_cvtsi32_si64(*(int*)p_u); \ - mm2 = _mm_cvtsi32_si64(*(int*)p_v); \ - mm1 = _mm_unpacklo_pi8(mm1, mm2); \ - mm2 = mm1; \ - mm2 = _mm_unpacklo_pi8(mm2, mm0); \ - *(uint64_t*)p_line = (uint64_t)mm2; \ - mm1 = _mm_unpackhi_pi8(mm1, mm0); \ - *(uint64_t*)(p_line+8) = (uint64_t)mm1; - #endif #elif defined( MODULE_NAME_IS_i422_yuy2_sse2 ) @@ -152,31 +118,6 @@ movq %%mm1, 8(%0) # Store high UYVY \n\ #define SSE2_END __asm__ __volatile__ ( "sfence" ::: "memory" ) -#define SSE2_YUV422_YUYV_ALIGNED " \n\ -movdqa (%1), %%xmm0 # Load 8 Y y7 y6 y5 y4 y3 y2 y1 y0 \n\ -movq (%2), %%xmm1 # Load 4 Cb 00 00 00 00 u3 u2 u1 u0 \n\ -movq (%3), %%xmm2 # Load 4 Cr 00 00 00 00 v3 v2 v1 v0 \n\ -punpcklbw %%xmm2, %%xmm1 # v3 u3 v2 u2 v1 u1 v0 u0 \n\ -movdqa %%xmm0, %%xmm2 # y7 y6 y5 y4 y3 y2 y1 y0 \n\ -punpcklbw %%xmm1, %%xmm2 # v1 y3 u1 y2 v0 y1 u0 y0 \n\ -movntdq %%xmm2, (%0) # Store low YUYV \n\ -punpckhbw %%xmm1, %%xmm0 # v3 y7 u3 y6 v2 y5 u2 y4 \n\ -movntdq %%xmm0, 16(%0) # Store high YUYV \n\ -" - -#define SSE2_YUV422_YUYV_UNALIGNED " \n\ -movdqu (%1), %%xmm0 # Load 8 Y y7 y6 y5 y4 y3 y2 y1 y0 \n\ -movq (%2), %%xmm1 # Load 4 Cb 00 00 00 00 u3 u2 u1 u0 \n\ -movq (%3), %%xmm2 # Load 4 Cr 00 00 00 00 v3 v2 v1 v0 \n\ -prefetchnta (%0) # Tell CPU not to cache output YUYV data \n\ -punpcklbw %%xmm2, %%xmm1 # v3 u3 v2 u2 v1 u1 v0 u0 \n\ -movdqa %%xmm0, %%xmm2 # y7 y6 y5 y4 y3 y2 y1 y0 \n\ -punpcklbw %%xmm1, %%xmm2 # v1 y3 u1 y2 v0 y1 u0 y0 \n\ -movdqu %%xmm2, (%0) # Store low YUYV \n\ -punpckhbw %%xmm1, %%xmm0 # v3 y7 u3 y6 v2 y5 u2 y4 \n\ -movdqu %%xmm0, 16(%0) # Store high YUYV \n\ -" - #define SSE2_YUV422_YVYU_ALIGNED " \n\ movdqa (%1), %%xmm0 # Load 8 Y y7 y6 y5 y4 y3 y2 y1 y0 \n\ movq (%2), %%xmm2 # Load 4 Cb 00 00 00 00 u3 u2 u1 u0 \n\ @@ -243,28 +184,6 @@ movdqu %%xmm1, 16(%0) # Store high UYVY \n\ #define SSE2_END _mm_sfence() -#define SSE2_YUV422_YUYV_ALIGNED \ - xmm0 = _mm_load_si128((__m128i *)p_y); \ - xmm1 = _mm_loadl_epi64((__m128i *)p_u); \ - xmm2 = _mm_loadl_epi64((__m128i *)p_v); \ - xmm1 = _mm_unpacklo_epi8(xmm1, xmm2); \ - xmm2 = xmm0; \ - xmm2 = _mm_unpacklo_epi8(xmm2, xmm1); \ - _mm_stream_si128((__m128i*)(p_line), xmm2); \ - xmm0 = _mm_unpackhi_epi8(xmm0, xmm1); \ - _mm_stream_si128((__m128i*)(p_line+16), xmm0); - -#define SSE2_YUV422_YUYV_UNALIGNED \ - xmm0 = _mm_loadu_si128((__m128i *)p_y); \ - xmm1 = _mm_loadl_epi64((__m128i *)p_u); \ - xmm2 = _mm_loadl_epi64((__m128i *)p_v); \ - xmm1 = _mm_unpacklo_epi8(xmm1, xmm2); \ - xmm2 = xmm0; \ - xmm2 = _mm_unpacklo_epi8(xmm2, xmm1); \ - _mm_storeu_si128((__m128i*)(p_line), xmm2); \ - xmm0 = _mm_unpackhi_epi8(xmm0, xmm1); \ - _mm_storeu_si128((__m128i*)(p_line+16), xmm0); - #define SSE2_YUV422_YVYU_ALIGNED \ xmm0 = _mm_load_si128((__m128i *)p_y); \ xmm2 = _mm_loadl_epi64((__m128i *)p_u); \ @@ -313,12 +232,6 @@ movdqu %%xmm1, 16(%0) # Store high UYVY \n\ #endif -#define C_YUV422_YUYV( p_line, p_y, p_u, p_v ) \ - *(p_line)++ = *(p_y)++; \ - *(p_line)++ = *(p_u)++; \ - *(p_line)++ = *(p_y)++; \ - *(p_line)++ = *(p_v)++; \ - #define C_YUV422_YVYU( p_line, p_y, p_u, p_v ) \ *(p_line)++ = *(p_y)++; \ *(p_line)++ = *(p_v)++; \ diff --git a/modules/video_chroma/yuy2_i420.c b/modules/video_chroma/yuy2_i420.c index d5aef11..a4f582b 100644 --- a/modules/video_chroma/yuy2_i420.c +++ b/modules/video_chroma/yuy2_i420.c @@ -33,7 +33,7 @@ #include #include -#define SRC_FOURCC "YUY2,YUNV,YVYU,UYVY,UYNV,Y422,cyuv" +#define SRC_FOURCC "YVYU,cyuv" #define DEST_FOURCC "I420" /***************************************************************************** @@ -41,14 +41,10 @@ *****************************************************************************/ static int Activate ( vlc_object_t * ); -static void YUY2_I420 ( filter_t *, picture_t *, picture_t * ); static void YVYU_I420 ( filter_t *, picture_t *, picture_t * ); -static void UYVY_I420 ( filter_t *, picture_t *, picture_t * ); static void cyuv_I420 ( filter_t *, picture_t *, picture_t * ); -static picture_t *YUY2_I420_Filter ( filter_t *, picture_t * ); static picture_t *YVYU_I420_Filter ( filter_t *, picture_t * ); -static picture_t *UYVY_I420_Filter ( filter_t *, picture_t * ); static picture_t *cyuv_I420_Filter ( filter_t *, picture_t * ); /***************************************************************************** @@ -84,18 +80,10 @@ static int Activate( vlc_object_t *p_this ) case VLC_CODEC_I420: switch( p_filter->fmt_in.video.i_chroma ) { - case VLC_CODEC_YUYV: - p_filter->pf_video_filter = YUY2_I420_Filter; - break; - case VLC_CODEC_YVYU: p_filter->pf_video_filter = YVYU_I420_Filter; break; - case VLC_CODEC_UYVY: - p_filter->pf_video_filter = UYVY_I420_Filter; - break; - case VLC_CODEC_CYUV: p_filter->pf_video_filter = cyuv_I420_Filter; break; @@ -112,80 +100,10 @@ static int Activate( vlc_object_t *p_this ) } /* Following functions are local */ -VIDEO_FILTER_WRAPPER( YUY2_I420 ) VIDEO_FILTER_WRAPPER( YVYU_I420 ) -VIDEO_FILTER_WRAPPER( UYVY_I420 ) VIDEO_FILTER_WRAPPER( cyuv_I420 ) /***************************************************************************** - * YUY2_I420: packed YUY2 4:2:2 to planar YUV 4:2:0 - *****************************************************************************/ -static void YUY2_I420( filter_t *p_filter, picture_t *p_source, - picture_t *p_dest ) -{ - uint8_t *p_line = p_source->p->p_pixels; - - uint8_t *p_y = p_dest->Y_PIXELS; - uint8_t *p_u = p_dest->U_PIXELS; - uint8_t *p_v = p_dest->V_PIXELS; - - int i_x, i_y; - - const int i_dest_margin = p_dest->p[0].i_pitch - - p_dest->p[0].i_visible_pitch; - const int i_dest_margin_c = p_dest->p[1].i_pitch - - p_dest->p[1].i_visible_pitch; - const int i_source_margin = p_source->p->i_pitch - - p_source->p->i_visible_pitch; - - bool b_skip = false; - - for( i_y = p_filter->fmt_out.video.i_height ; i_y-- ; ) - { - if( b_skip ) - { - for( i_x = p_filter->fmt_out.video.i_width / 8 ; i_x-- ; ) - { - #define C_YUYV_YUV422_skip( p_line, p_y, p_u, p_v ) \ - *p_y++ = *p_line++; p_line++; \ - *p_y++ = *p_line++; p_line++ - C_YUYV_YUV422_skip( p_line, p_y, p_u, p_v ); - C_YUYV_YUV422_skip( p_line, p_y, p_u, p_v ); - C_YUYV_YUV422_skip( p_line, p_y, p_u, p_v ); - C_YUYV_YUV422_skip( p_line, p_y, p_u, p_v ); - } - for( i_x = ( p_filter->fmt_out.video.i_width % 8 ) / 2; i_x-- ; ) - { - C_YUYV_YUV422_skip( p_line, p_y, p_u, p_v ); - } - } - else - { - for( i_x = p_filter->fmt_out.video.i_width / 8 ; i_x-- ; ) - { - #define C_YUYV_YUV422( p_line, p_y, p_u, p_v ) \ - *p_y++ = *p_line++; *p_u++ = *p_line++; \ - *p_y++ = *p_line++; *p_v++ = *p_line++ - C_YUYV_YUV422( p_line, p_y, p_u, p_v ); - C_YUYV_YUV422( p_line, p_y, p_u, p_v ); - C_YUYV_YUV422( p_line, p_y, p_u, p_v ); - C_YUYV_YUV422( p_line, p_y, p_u, p_v ); - } - for( i_x = ( p_filter->fmt_out.video.i_width % 8 ) / 2; i_x-- ; ) - { - C_YUYV_YUV422( p_line, p_y, p_u, p_v ); - } - } - p_line += i_source_margin; - p_y += i_dest_margin; - p_u += i_dest_margin_c; - p_v += i_dest_margin_c; - - b_skip = !b_skip; - } -} - -/***************************************************************************** * YVYU_I420: packed YVYU 4:2:2 to planar YUV 4:2:0 *****************************************************************************/ static void YVYU_I420( filter_t *p_filter, picture_t *p_source, @@ -254,74 +172,6 @@ static void YVYU_I420( filter_t *p_filter, picture_t *p_source, } /***************************************************************************** - * UYVY_I420: packed UYVY 4:2:2 to planar YUV 4:2:0 - *****************************************************************************/ -static void UYVY_I420( filter_t *p_filter, picture_t *p_source, - picture_t *p_dest ) -{ - uint8_t *p_line = p_source->p->p_pixels; - - uint8_t *p_y = p_dest->Y_PIXELS; - uint8_t *p_u = p_dest->U_PIXELS; - uint8_t *p_v = p_dest->V_PIXELS; - - int i_x, i_y; - - const int i_dest_margin = p_dest->p[0].i_pitch - - p_dest->p[0].i_visible_pitch; - const int i_dest_margin_c = p_dest->p[1].i_pitch - - p_dest->p[1].i_visible_pitch; - const int i_source_margin = p_source->p->i_pitch - - p_source->p->i_visible_pitch; - - bool b_skip = false; - - for( i_y = p_filter->fmt_out.video.i_height ; i_y-- ; ) - { - if( b_skip ) - { - for( i_x = p_filter->fmt_out.video.i_width / 8 ; i_x-- ; ) - { - #define C_UYVY_YUV422_skip( p_line, p_y, p_u, p_v ) \ - *p_u++ = *p_line++; p_line++; \ - *p_v++ = *p_line++; p_line++ - C_UYVY_YUV422_skip( p_line, p_y, p_u, p_v ); - C_UYVY_YUV422_skip( p_line, p_y, p_u, p_v ); - C_UYVY_YUV422_skip( p_line, p_y, p_u, p_v ); - C_UYVY_YUV422_skip( p_line, p_y, p_u, p_v ); - } - for( i_x = ( p_filter->fmt_out.video.i_width % 8 ) / 2; i_x-- ; ) - { - C_UYVY_YUV422_skip( p_line, p_y, p_u, p_v ); - } - } - else - { - for( i_x = p_filter->fmt_out.video.i_width / 8 ; i_x-- ; ) - { - #define C_UYVY_YUV422( p_line, p_y, p_u, p_v ) \ - *p_u++ = *p_line++; *p_y++ = *p_line++; \ - *p_v++ = *p_line++; *p_y++ = *p_line++ - C_UYVY_YUV422( p_line, p_y, p_u, p_v ); - C_UYVY_YUV422( p_line, p_y, p_u, p_v ); - C_UYVY_YUV422( p_line, p_y, p_u, p_v ); - C_UYVY_YUV422( p_line, p_y, p_u, p_v ); - } - for( i_x = ( p_filter->fmt_out.video.i_width % 8 ) / 2; i_x-- ; ) - { - C_UYVY_YUV422( p_line, p_y, p_u, p_v ); - } - } - p_line += i_source_margin; - p_y += i_dest_margin; - p_u += i_dest_margin_c; - p_v += i_dest_margin_c; - - b_skip = !b_skip; - } -} - -/***************************************************************************** * cyuv_I420: upside-down packed UYVY 4:2:2 to planar YUV 4:2:0 * FIXME *****************************************************************************/ diff --git a/modules/video_chroma/yuy2_i422.c b/modules/video_chroma/yuy2_i422.c index bcd6b1c..22af389 100644 --- a/modules/video_chroma/yuy2_i422.c +++ b/modules/video_chroma/yuy2_i422.c @@ -33,7 +33,7 @@ #include #include -#define SRC_FOURCC "YUY2,YUNV,YVYU,UYVY,UYNV,Y422,cyuv" +#define SRC_FOURCC "YVYU,cyuv" #define DEST_FOURCC "I422" /***************************************************************************** @@ -41,13 +41,9 @@ *****************************************************************************/ static int Activate ( vlc_object_t * ); -static void YUY2_I422 ( filter_t *, picture_t *, picture_t * ); static void YVYU_I422 ( filter_t *, picture_t *, picture_t * ); -static void UYVY_I422 ( filter_t *, picture_t *, picture_t * ); static void cyuv_I422 ( filter_t *, picture_t *, picture_t * ); -static picture_t *YUY2_I422_Filter ( filter_t *, picture_t * ); static picture_t *YVYU_I422_Filter ( filter_t *, picture_t * ); -static picture_t *UYVY_I422_Filter ( filter_t *, picture_t * ); static picture_t *cyuv_I422_Filter ( filter_t *, picture_t * ); /***************************************************************************** @@ -83,18 +79,10 @@ static int Activate( vlc_object_t *p_this ) case VLC_CODEC_I422: switch( p_filter->fmt_in.video.i_chroma ) { - case VLC_CODEC_YUYV: - p_filter->pf_video_filter = YUY2_I422_Filter; - break; - case VLC_CODEC_YVYU: p_filter->pf_video_filter = YVYU_I422_Filter; break; - case VLC_CODEC_UYVY: - p_filter->pf_video_filter = UYVY_I422_Filter; - break; - case VLC_CODEC_CYUV: p_filter->pf_video_filter = cyuv_I422_Filter; break; @@ -112,56 +100,10 @@ static int Activate( vlc_object_t *p_this ) /* Following functions are local */ -VIDEO_FILTER_WRAPPER( YUY2_I422 ) VIDEO_FILTER_WRAPPER( YVYU_I422 ) -VIDEO_FILTER_WRAPPER( UYVY_I422 ) VIDEO_FILTER_WRAPPER( cyuv_I422 ) /***************************************************************************** - * YUY2_I422: packed YUY2 4:2:2 to planar YUV 4:2:2 - *****************************************************************************/ -static void YUY2_I422( filter_t *p_filter, picture_t *p_source, - picture_t *p_dest ) -{ - uint8_t *p_line = p_source->p->p_pixels; - - uint8_t *p_y = p_dest->Y_PIXELS; - uint8_t *p_u = p_dest->U_PIXELS; - uint8_t *p_v = p_dest->V_PIXELS; - - int i_x, i_y; - - const int i_dest_margin = p_dest->p[0].i_pitch - - p_dest->p[0].i_visible_pitch; - const int i_dest_margin_c = p_dest->p[1].i_pitch - - p_dest->p[1].i_visible_pitch; - const int i_source_margin = p_source->p->i_pitch - - p_source->p->i_visible_pitch; - - for( i_y = p_filter->fmt_out.video.i_height ; i_y-- ; ) - { - for( i_x = p_filter->fmt_out.video.i_width / 8 ; i_x-- ; ) - { -#define C_YUYV_YUV422( p_line, p_y, p_u, p_v ) \ - *p_y++ = *p_line++; *p_u++ = *p_line++; \ - *p_y++ = *p_line++; *p_v++ = *p_line++ - C_YUYV_YUV422( p_line, p_y, p_u, p_v ); - C_YUYV_YUV422( p_line, p_y, p_u, p_v ); - C_YUYV_YUV422( p_line, p_y, p_u, p_v ); - C_YUYV_YUV422( p_line, p_y, p_u, p_v ); - } - for( i_x = ( p_filter->fmt_out.video.i_width % 8 ) / 2; i_x-- ; ) - { - C_YUYV_YUV422( p_line, p_y, p_u, p_v ); - } - p_line += i_source_margin; - p_y += i_dest_margin; - p_u += i_dest_margin_c; - p_v += i_dest_margin_c; - } -} - -/***************************************************************************** * YVYU_I422: packed YVYU 4:2:2 to planar YUV 4:2:2 *****************************************************************************/ static void YVYU_I422( filter_t *p_filter, picture_t *p_source, @@ -206,50 +148,6 @@ static void YVYU_I422( filter_t *p_filter, picture_t *p_source, } /***************************************************************************** - * UYVY_I422: packed UYVY 4:2:2 to planar YUV 4:2:2 - *****************************************************************************/ -static void UYVY_I422( filter_t *p_filter, picture_t *p_source, - picture_t *p_dest ) -{ - uint8_t *p_line = p_source->p->p_pixels; - - uint8_t *p_y = p_dest->Y_PIXELS; - uint8_t *p_u = p_dest->U_PIXELS; - uint8_t *p_v = p_dest->V_PIXELS; - - int i_x, i_y; - - const int i_dest_margin = p_dest->p[0].i_pitch - - p_dest->p[0].i_visible_pitch; - const int i_dest_margin_c = p_dest->p[1].i_pitch - - p_dest->p[1].i_visible_pitch; - const int i_source_margin = p_source->p->i_pitch - - p_source->p->i_visible_pitch; - - for( i_y = p_filter->fmt_out.video.i_height ; i_y-- ; ) - { - for( i_x = p_filter->fmt_out.video.i_width / 8 ; i_x-- ; ) - { -#define C_UYVY_YUV422( p_line, p_y, p_u, p_v ) \ - *p_u++ = *p_line++; *p_y++ = *p_line++; \ - *p_v++ = *p_line++; *p_y++ = *p_line++ - C_UYVY_YUV422( p_line, p_y, p_u, p_v ); - C_UYVY_YUV422( p_line, p_y, p_u, p_v ); - C_UYVY_YUV422( p_line, p_y, p_u, p_v ); - C_UYVY_YUV422( p_line, p_y, p_u, p_v ); - } - for( i_x = ( p_filter->fmt_out.video.i_width % 8 ) / 2; i_x-- ; ) - { - C_UYVY_YUV422( p_line, p_y, p_u, p_v ); - } - p_line += i_source_margin; - p_y += i_dest_margin; - p_u += i_dest_margin_c; - p_v += i_dest_margin_c; - } -} - -/***************************************************************************** * cyuv_I422: upside-down packed UYVY 4:2:2 to planar YUV 4:2:2 * FIXME *****************************************************************************/ diff --git a/modules/video_filter/swscale.c b/modules/video_filter/swscale.c index 8c1d879..1d8b64f 100644 --- a/modules/video_filter/swscale.c +++ b/modules/video_filter/swscale.c @@ -76,8 +76,6 @@ vlc_module_begin () change_integer_list( pi_mode_values, ppsz_mode_descriptions, NULL ) vlc_module_end () -/* Version checking */ -#if LIBSWSCALE_VERSION_INT >= ((0<<16)+(5<<8)+0) /**************************************************************************** * Local prototypes ****************************************************************************/ @@ -241,10 +239,10 @@ static int GetSwsCpuMask(void) if( i_cpu & CPU_CAPABILITY_MMX ) i_sws_cpu |= SWS_CPU_CAPS_MMX; -#if (LIBSWSCALE_VERSION_INT >= ((0<<16)+(5<<8)+0)) + if( i_cpu & CPU_CAPABILITY_MMXEXT ) i_sws_cpu |= SWS_CPU_CAPS_MMX2; -#endif + if( i_cpu & CPU_CAPABILITY_3DNOW ) i_sws_cpu |= SWS_CPU_CAPS_3DNOW; @@ -638,16 +636,3 @@ static picture_t *Filter( filter_t *p_filter, picture_t *p_pic ) picture_Release( p_pic ); return p_pic_dst; } - -#else /* LIBSWSCALE_VERSION_INT >= ((0<<16)+(5<<8)+0) */ - -int OpenScaler( vlc_object_t *p_this ) -{ - return VLC_EGENERIC; -} - -void CloseScaler( vlc_object_t *p_this ) -{ -} - -#endif /* LIBSWSCALE_VERSION_INT >= ((0<<16)+(5<<8)+0) */ -- 1.7.0.4 From brezhoneg1 at yahoo.fr Mon Jun 28 23:12:03 2010 From: brezhoneg1 at yahoo.fr (brezhoneg1) Date: Mon, 28 Jun 2010 23:12:03 +0200 Subject: [vlc-devel] [vlc-commits] commit: skins2(Linux): check if _NET_WM_PID is supported (Erwan Tulou ) In-Reply-To: <201006281514.17052.rem@videolan.org> References: <20100628090852.717B8FB675@albiero.videolan.org> <201006281514.17052.rem@videolan.org> Message-ID: <4C291023.4040702@yahoo.fr> On 28/06/2010 14:14, R?mi Denis-Courmont wrote: > On Monday 28 June 2010 12:08:52 git at videolan.org, you wrote: > >> vlc | branch: master | Erwan Tulou | Mon Jun 28 >> 10:13:03 2010 +0200| [ec30dbc12d48358711d25a5c80a509e641e6bb79] | >> committer: Erwan Tulou >> >> skins2(Linux): check if _NET_WM_PID is supported >> > If the window manager is started after VLC, you won't define the PID anymore, > which is wrong. And if there is no window manager, you couldn't care less that > NET_WM_PID is defined but not supported. > > Hi, Do you mean that something's wrong or could be done in a better way in the patch ? Actually, window managers must advertise which EWMH features they support in _NET_SUPPORTED at the root window level. For Ubuntu10.04, KDE4.4.2 does support _NET_WM_PID, but Gnome2.30 doesn't. The result for Gnome users was a series of the following non fatal errors (one per skins windows created): X Error: BadAtom (invalid Atom parameter) 5 Major opcode: 18 (X_ChangeProperty) Resource id: 0x0 The patch was just intended to remove these scary warnings by not setting the property, since the WM didn't care. Yet, what is the real use of _NET_WM_PID ? I don't know. (I guess it gives a means to kill a unresponsive process). It was implemented because the docky maintainers advised to do so. I'm wondering if third party software (Docky is not part of the WM) can make use of this feature even if it is not 'officially' supported by the underlying WM. In which case, it would be better to create this property anyway .... Is that what you suggested in your post ? Rgds Erwan10 From xuacusk8 at gmail.com Mon Jun 28 18:47:13 2010 From: xuacusk8 at gmail.com (Xuacu) Date: Mon, 28 Jun 2010 18:47:13 +0200 Subject: [vlc-devel] Asturian translation for vlc Message-ID: <1277743633.32008.18.camel@nuberu> Hello. Our team is ready to start working in Asturian language for vlc. I've downloaded vlc.pot from http://git.videolan.org/?p=vlc.git;a=tree;f=po;h=15495be40a6bd23fa9e72294babe3eb2fb6b3d54;hb=HEAD Is there something we should know before starting translation? When it's ready, should we attach ast.po to a bug report, or we must use this mail address to send it? Best regards. -- Saludinos Xuacu Saturio From remi at remlab.net Mon Jun 28 23:14:25 2010 From: remi at remlab.net (=?UTF-8?Q?R=C3=A9mi_Denis-Courmont?=) Date: Mon, 28 Jun 2010 23:14:25 +0200 Subject: [vlc-devel] ffmpeg this and that (was Re: [PATCH] Remove chroma conversions already handled by swscale) In-Reply-To: <1277758900-25111-1-git-send-email-rafael.carre@gmail.com> References: <1277758900-25111-1-git-send-email-rafael.carre@gmail.com> Message-ID: <9f521c8465d33d58457424dc0eafad13@chewa.net> On Mon, 28 Jun 2010 23:01:40 +0200, Rafa?l Carr? wrote: > Require libswscale >= 0.5.0 in configure.ac > Remaining chromas unknown to libswscale: > - YVYU : Packed YUV 4:2:2, Y:V:Y:U > - IUYV : ? > - CYUV : 10-bit 4:2:2 Component YCbCr > - Y211 : Packed YUV 2:1:1, Y:U:Y:V > Should be possible to add to libswscale chroma converter: > - YUVA : Palettized RGB with palette element R:G:B > > Briefly tested against a couple of movies, MMX and SSE2 modules still > build I made no speed comparison The whole point of these plugins is, or at least was, to be as fast as possible. They may not be so relevant anymore considering that: 1/ most decoded video signals are I420 or YV12, and 2/ most (commonly used) video outputs support hardware YUV [1]. But generally, there is a LOT of stuff we COULD remove if we relied upon FFmpeg, chromas, scalers, codecs, demuxers, muxers, accesses... And someone will surely write a VLC plugin for libavfilter sooner or later. That does not mean it is a good (or bad) idea. That brings the more disturbing question whether there remains anything of (Lib)VLC if FFmpeg does everything. [1] Or not. My ATI Xorg driver is much less stable than the plain VESA driver. The latter obviously lacks XVideo. -- R?mi Denis-Courmont http://www.remlab.net http://fi.linkedin.com/in/remidenis From remi at remlab.net Mon Jun 28 23:22:17 2010 From: remi at remlab.net (=?UTF-8?Q?R=C3=A9mi_Denis-Courmont?=) Date: Mon, 28 Jun 2010 23:22:17 +0200 Subject: [vlc-devel] =?utf-8?q?=5Bvlc-commits=5D_commit=3A_skins2=28Linux?= =?utf-8?q?=29=3A_check_if=09=5FNET=5FWM=5FPID_is_supported_=28Erwan_Tulou?= =?utf-8?q?_=29?= In-Reply-To: <4C291023.4040702@yahoo.fr> References: <20100628090852.717B8FB675@albiero.videolan.org> <201006281514.17052.rem@videolan.org> <4C291023.4040702@yahoo.fr> Message-ID: <783d4836ce64b580e3d1fada2244d683@chewa.net> On Mon, 28 Jun 2010 23:12:03 +0200, brezhoneg1 wrote: > Do you mean that something's wrong or could be done in a better way > in the patch ? It looks wrong. > Actually, window managers must advertise which EWMH features they > support in _NET_SUPPORTED at the root window level. That's irrelevant. You would care about _NET_SUPPORTED when you sent a message to the window manager. Then you need to fallback to something else if the feature is not implemented (e.g. full screen mode). You don't need to care to set a property on your own window. If the window manager does not support the property, it will ignore it. Most importantly, if the window manager starts (or changes) after you check the NET_SUPPORTED property, you won't accidentally "disable" a feature. > For Ubuntu10.04, KDE4.4.2 does support _NET_WM_PID, but Gnome2.30 > doesn't. > > The result for Gnome users was a series of the following non fatal > errors > (one per skins windows created): > X Error: BadAtom (invalid Atom parameter) 5 > Major opcode: 18 (X_ChangeProperty) > Resource id: 0x0 That means you sent a property change request which is not valid at the X11 protocol level. The property and/or the type atom probably did not exist. Maybe the code does not intern the _NET_WM_PID atom correctly and forwards an error value to the XChangeProperty function. That would happen if "only_if_exists" is True when calling XInternAtom, whereas it should be False. > The patch was just intended to remove these scary warnings by not > setting the property, since the WM didn't care. > > Yet, what is the real use of _NET_WM_PID ? I don't know. (I guess > it gives a means to kill a unresponsive process). It was implemented > because the docky maintainers advised to do so. I'm wondering if third > party software (Docky is not part of the WM) can make use of this > feature even if it is not 'officially' supported by the underlying WM. > In which case, it would be better to create this property anyway .... Is > that what you suggested in your post ? Yes. -- R?mi Denis-Courmont http://www.remlab.net http://fi.linkedin.com/in/remidenis From remi at remlab.net Mon Jun 28 23:25:45 2010 From: remi at remlab.net (=?UTF-8?Q?R=C3=A9mi_Denis-Courmont?=) Date: Mon, 28 Jun 2010 23:25:45 +0200 Subject: [vlc-devel] Asturian translation for vlc In-Reply-To: <1277743633.32008.18.camel@nuberu> References: <1277743633.32008.18.camel@nuberu> Message-ID: On Mon, 28 Jun 2010 18:47:13 +0200, Xuacu wrote: > Our team is ready to start working in Asturian language for vlc. > > I've downloaded vlc.pot from > > http://git.videolan.org/?p=vlc.git;a=tree;f=po;h=15495be40a6bd23fa9e72294babe3eb2fb6b3d54;hb=HEAD > > Is there something we should know before starting translation? When it's > ready, should we attach ast.po to a bug report, or we must use this mail > address to send it? You should rather get the one there http://git.videolan.org/?p=vlc/vlc-1.1.git;a=tree;f=po;hb=HEAD PO files are maintained in the stable tree, not the development tree. As for contacts, there is a dedicated translators mailing list on the same domain. -- R?mi Denis-Courmont http://www.remlab.net http://fi.linkedin.com/in/remidenis From fenrir at elivagar.org Mon Jun 28 23:28:44 2010 From: fenrir at elivagar.org (Laurent Aimar) Date: Mon, 28 Jun 2010 23:28:44 +0200 Subject: [vlc-devel] [PATCH] Remove chroma conversions already handled by swscale In-Reply-To: <1277758900-25111-1-git-send-email-rafael.carre@gmail.com> References: <1277758900-25111-1-git-send-email-rafael.carre@gmail.com> Message-ID: <1277760524.3808.4.camel@localhost> Hi, At least because of the I420 -> YUY2 conversion (without rescaling), this module has been given a higher priority than swscale. From what I remember, it was (at that time at least) significantly faster. So I think that before removing any of thoses modules, they must be benchmarked. Regards, -- fenrir From rafael.carre at gmail.com Mon Jun 28 23:46:15 2010 From: rafael.carre at gmail.com (=?UTF-8?B?UmFmYcOrbCBDYXJyw6k=?=) Date: Mon, 28 Jun 2010 23:46:15 +0200 Subject: [vlc-devel] ffmpeg this and that (was Re: [PATCH] Remove chroma conversions already handled by swscale) In-Reply-To: <9f521c8465d33d58457424dc0eafad13@chewa.net> References: <1277758900-25111-1-git-send-email-rafael.carre@gmail.com> <9f521c8465d33d58457424dc0eafad13@chewa.net> Message-ID: <20100628234615.2ae8c003@kru> On Mon, 28 Jun 2010 23:14:25 +0200 R?mi Denis-Courmont wrote: > That brings the more disturbing question whether there remains > anything of (Lib)VLC if FFmpeg does everything. I think so, there is lot of things which FFmpeg doesn't handle afaik: audio/video output, streaming output (although some people are working on it i think - i never tried ffserver -), playlist, windows threads etc.. but you should know better than me Also in the unprobable event ffmpeg replaces libvlc, that still doesn't make ffmpeg an application on the player side. -- ? Rafa?l Carr? ? -------------- next part -------------- A non-text attachment was scrubbed... Name: signature.asc Type: application/pgp-signature Size: 198 bytes Desc: not available URL: From jb at videolan.org Tue Jun 29 01:21:40 2010 From: jb at videolan.org (Jean-Baptiste Kempf) Date: Tue, 29 Jun 2010 01:21:40 +0200 Subject: [vlc-devel] =?iso-8859-1?q?=5Bvlc-commits=5D_commit=3A_Atomic_ope?= =?iso-8859-1?q?rations_=28currently_same_ones_as_in_garbage_collec?= =?iso-8859-1?q?tor=29_=28_R=E9mi_Denis-Courmont_=29?= In-Reply-To: <20100627233155.D0EF8FBF17@albiero.videolan.org> References: <20100627233155.D0EF8FBF17@albiero.videolan.org> Message-ID: <20100628232140.GA25313@videolan.org> On Mon, Jun 28, 2010 at 01:31:55AM +0200, git at videolan.org wrote : > +uintptr_t vlc_atomic_add (vlc_atomic_t *atom, uintptr_t v) > +{ > +#if defined (WIN64) > + return InterlockedAdd64 (&atom->s, v); > +#else > + return InterlockedAdd (&atom->s, v); > +#endif > +} Aren't those only defined in Itanium ? At least MSDN seems to say so. Souldn't we use InterlockedExchangeAdd and InterlockedExchangeAdd64 ? Best Regards, -- Jean-Baptiste Kempf http://www.jbkempf.com/ From remi at remlab.net Tue Jun 29 01:31:12 2010 From: remi at remlab.net (=?ISO-8859-1?Q?R=E9mi?= Denis-Courmont) Date: Mon, 28 Jun 2010 16:31:12 -0700 Subject: [vlc-devel] =?iso-8859-1?q?=5Bvlc-commits=5D_commit=3A_Atomic_ope?= =?iso-8859-1?q?rations_=28currently_same_ones_as_in_garbage_collec?= =?iso-8859-1?q?tor=29_=28_R=E9mi_Denis-Courmont=09=29?= In-Reply-To: <20100628232140.GA25313@videolan.org> References: <20100627233155.D0EF8FBF17@albiero.videolan.org> <20100628232140.GA25313@videolan.org> Message-ID: <1277767872.22446.4.camel@Nokia-N900-51-1> ----- Message d'origine ----- > On Mon, Jun 28, 2010 at 01:31:55AM +0200, git at videolan.org wrote : > > +uintptr_t vlc_atomic_add (vlc_atomic_t *atom, uintptr_t v) > > +{ > > +#if defined (WIN64) > > +? ? ? return InterlockedAdd64 (&atom->s, v); > > +#else > > +? ? ? return InterlockedAdd (&atom->s, v); > > +#endif > > +} > > Aren't those only defined in Itanium ? At least MSDN seems to say so. I dont know. I would rather use the GCC intrinsics. But VLC 1.0 and 1.1 use InterlockedIncrement so it seemed logical to use InterlockedAdd. From jb at videolan.org Tue Jun 29 01:46:17 2010 From: jb at videolan.org (Jean-Baptiste Kempf) Date: Tue, 29 Jun 2010 01:46:17 +0200 Subject: [vlc-devel] =?iso-8859-1?q?=5Bvlc-commits=5D_commit=3A_Atomic_ope?= =?iso-8859-1?q?rations_=28currently_same_ones_as_in_garbage_collec?= =?iso-8859-1?q?tor=29_=28_R=E9mi_=09Denis-Courmont=3F=29?= In-Reply-To: <1277767872.22446.4.camel@Nokia-N900-51-1> References: <20100627233155.D0EF8FBF17@albiero.videolan.org> <20100628232140.GA25313@videolan.org> <1277767872.22446.4.camel@Nokia-N900-51-1> Message-ID: <20100628234617.GA31231@videolan.org> On Mon, Jun 28, 2010 at 04:31:12PM -0700, R?mi Denis-Courmont wrote : > ----- Message d'origine ----- > > On Mon, Jun 28, 2010 at 01:31:55AM +0200, git at videolan.org wrote : > > > +uintptr_t vlc_atomic_add (vlc_atomic_t *atom, uintptr_t v) > > > +{ > > > +#if defined (WIN64) > > > +? ? ? return InterlockedAdd64 (&atom->s, v); > > > +#else > > > +? ? ? return InterlockedAdd (&atom->s, v); > > > +#endif > > > +} > > > > Aren't those only defined in Itanium ? At least MSDN seems to say so. > > I dont know. I would rather use the GCC intrinsics. But VLC 1.0 and 1.1 use InterlockedIncrement so it seemed logical to use InterlockedAdd. Very well. I believe we should use InterlockedExchangeAdd then. Why using atom->s and not atom->u btw ? Best Regards, -- Jean-Baptiste Kempf http://www.jbkempf.com/ From twister99403 at gmail.com Tue Jun 29 05:26:53 2010 From: twister99403 at gmail.com (twister99403 at gmail.com) Date: Mon, 28 Jun 2010 20:26:53 -0700 (PDT) Subject: [vlc-devel] Android port of VLC? Message-ID: <1182750600.1.1277782014037.JavaMail.javamailuser@localhost> Just curious where I might be able to get Android copy of vlc? Thank you for any response :) Alan -------------- next part -------------- An HTML attachment was scrubbed... URL: From dadatis at gmail.com Tue Jun 29 13:09:42 2010 From: dadatis at gmail.com (Daniel Tisza) Date: Tue, 29 Jun 2010 14:09:42 +0300 Subject: [vlc-devel] [PATCH] Integrate the RTMPdump library to play rtmp and rtmpe streams. Message-ID: Hi, A minimalistic access plugin wrapper for librtmp in vlc. Requires librtmp. Use ./configure --enable-rtmpdump to enable for compiling. Allows saving and loading stream options to playlist. I also attach a sample playlist for testing purposes. Daniel Tisza -------------- next part -------------- A non-text attachment was scrubbed... Name: rtmpdump.patch Type: text/x-patch Size: 25615 bytes Desc: not available URL: -------------- next part -------------- A non-text attachment was scrubbed... Name: tvtest.xspf Type: application/xspf+xml Size: 1591 bytes Desc: not available URL: From kaarlo.raiha at gmail.com Tue Jun 29 13:21:31 2010 From: kaarlo.raiha at gmail.com (=?ISO-8859-1?B?S2FhcmxvIFLkaWjk?=) Date: Tue, 29 Jun 2010 14:21:31 +0300 Subject: [vlc-devel] Android port of VLC? In-Reply-To: <1182750600.1.1277782014037.JavaMail.javamailuser@localhost> References: <1182750600.1.1277782014037.JavaMail.javamailuser@localhost> Message-ID: AFAIK there isn't any VLC for Android available. 2010/6/29 > Just curious where I might be able to get Android copy of vlc? Thank you > for any response :) > > Alan > _______________________________________________ > vlc-devel mailing list > To unsubscribe or modify your subscription options: > http://mailman.videolan.org/listinfo/vlc-devel > > -------------- next part -------------- An HTML attachment was scrubbed... URL: From fcvlcdev at free.fr Tue Jun 29 14:31:23 2010 From: fcvlcdev at free.fr (Francois Cartegnie) Date: Tue, 29 Jun 2010 14:31:23 +0200 Subject: [vlc-devel] [PATCH] gnutls: search CA in every known locations. Message-ID: <1277814683-32725-1-git-send-email-fcvlcdev@free.fr> --- modules/misc/gnutls.c | 38 +++++++++++++++++++++++++++++++++----- 1 files changed, 33 insertions(+), 5 deletions(-) diff --git a/modules/misc/gnutls.c b/modules/misc/gnutls.c index 5b7a82b..016e29a 100644 --- a/modules/misc/gnutls.c +++ b/modules/misc/gnutls.c @@ -694,13 +694,41 @@ static int OpenClient (vlc_object_t *obj) } const char *confdir = config_GetConfDir (); +#ifdef WIN32 + /** FIXME: Use crytoapi to fetch system's CA certificates **/ +#else { - char path[strlen (confdir) - + sizeof ("/ssl/certs/ca-certificates.crt")]; - sprintf (path, "%s/ssl/certs/ca-certificates.crt", confdir); - gnutls_Addx509File (VLC_OBJECT (p_session), - p_sys->x509_cred, path, false); + /* CA locations listed in reverse priority */ + const char* const stdcafiles[] = { +#ifdef __SunOS + "/crypto/certs/CA", + "/crypto/certs/SUNWobjectCA", +#endif + "/ssl/certs/ca-bundle.crt", + "/ssl/certs/ca-certificates.crt" + }; + int i_length = sizeof (stdcafiles) / sizeof (const char *); + struct stat t_stat_lstat; + char *psz_path; + while(i_length-- > 0) + { + psz_path = calloc ( sizeof (char), 1 + strlen (confdir) + + strlen (stdcafiles[i_length]) ); + if (psz_path != NULL) + { + sprintf (psz_path, "%s%s", confdir, stdcafiles[i_length]); + if (!vlc_stat (psz_path, &t_stat_lstat)) + { + gnutls_Addx509File (VLC_OBJECT (p_session), + p_sys->x509_cred, psz_path, false); + free (psz_path); + break; + } + free (psz_path); + } + } } +#endif p_session->pf_handshake = gnutls_HandshakeAndValidate; /*p_session->pf_handshake = gnutls_ContinueHandshake;*/ -- 1.6.4.4 From rem at videolan.org Tue Jun 29 15:16:19 2010 From: rem at videolan.org (=?iso-8859-15?q?R=E9mi?= Denis-Courmont) Date: Tue, 29 Jun 2010 16:16:19 +0300 Subject: [vlc-devel] ffmpeg this and that (was Re: [PATCH] Remove chroma conversions already handled by swscale) In-Reply-To: <20100628234615.2ae8c003@kru> References: <1277758900-25111-1-git-send-email-rafael.carre@gmail.com> <9f521c8465d33d58457424dc0eafad13@chewa.net> <20100628234615.2ae8c003@kru> Message-ID: <201006291616.19838.rem@videolan.org> On Tuesday 29 June 2010 00:46:15 Rafa?l Carr?, you wrote: > On Mon, 28 Jun 2010 23:14:25 +0200 > > R?mi Denis-Courmont wrote: > > That brings the more disturbing question whether there remains > > anything of (Lib)VLC if FFmpeg does everything. > > I think so, there is lot of things which FFmpeg doesn't handle afaik: > > audio/video output, ffplay must have that code somewhere actually. > streaming output (although some people are working > on it i think - i never tried ffserver -), So it is there. > playlist, That belongs in the UI anyway. > windows threads ?? > Also in the unprobable event ffmpeg replaces libvlc, that still doesn't > make ffmpeg an application on the player side. -- R?mi Denis-Courmont From rem at videolan.org Tue Jun 29 15:22:49 2010 From: rem at videolan.org (=?iso-8859-15?q?R=E9mi?= Denis-Courmont) Date: Tue, 29 Jun 2010 16:22:49 +0300 Subject: [vlc-devel] ffmpeg rtsp access demuxer In-Reply-To: References: <201006240327.57416.rem@videolan.org> Message-ID: <201006291622.50090.rem@videolan.org> Hello, On Thursday 24 June 2010 11:23:15 Josh Allmann, you wrote: > > + strcpy(opts, "?tcp"); > > > > If I'm not mistaken, you could simply assign a const char pointer instead > > of using strcpy(). > > Fixed > > > + else if( var_CreateGetBool( p_demux, "rtsp-http" ) ) > > + strcpy(opts, "?http"); > > + else if( var_CreateGetBool( p_demux, "rtsp-udp" ) ) > > + strcpy(opts, "?udp"); > > > > Same notes as above. > > Fixed Now that I think of it, this is very much RTSP-specific. The current code should work (I haven't tried). But in the interest of extensibility, it might make sense to refactor the current DemuxOpen(vlc_object_t *) into DemuxOpen(demux_t *, const char *path, bool is_opened) and create two separate plugin entry points, one for the existing avformat demux plugin, and one for the new RTSP access_demux. Then it will be easier to add other protocols such as MMS out of avformat later and it looks cleaner (IMHO). Do I make sense? -- R?mi Denis-Courmont From rem at videolan.org Tue Jun 29 15:41:17 2010 From: rem at videolan.org (=?iso-8859-15?q?R=E9mi?= Denis-Courmont) Date: Tue, 29 Jun 2010 16:41:17 +0300 Subject: [vlc-devel] [PATCH] Integrate the RTMPdump library to play rtmp and rtmpe streams. In-Reply-To: References: Message-ID: <201006291641.18397.rem@videolan.org> Hello, comments inline diff --git a/configure.ac b/configure.ac index 1a428e7..74bc9e5 100644 --- a/configure.ac +++ b/configure.ac @@ -2917,6 +2917,18 @@ if test "${enable_realrtsp}" = "yes"; then fi dnl +dnl RTMPDump access plugin +dnl +AC_ARG_ENABLE(rtmpdump, + [ --enable-rtmpdump RTMPDump access plugin (default disabled)]) +if test "${enable_rtmpdump}" = "yes"; then + AC_CHECK_HEADERS(librtmp/rtmp.h, [ + VLC_ADD_PLUGIN([access_rtmpdump]) + VLC_ADD_LIBS([access_rtmpdump],[-lz -lssl -lcrypto -lrtmp]) + ] ) +fi Does librtmp not support pkg-config? Is it always a static library (otherwise why do we need zlib and OpenSSL)? This will require GPLv3, oh well. diff --git a/modules/access/rtmpdump/Modules.am b/modules/access/rtmpdump/Modules.am new file mode 100644 index 0000000..7bb006a --- /dev/null +++ b/modules/access/rtmpdump/Modules.am @@ -0,0 +1,10 @@ +libaccess_rtmpdump_plugin_la_SOURCES = \ + rtmpdump.c \ + access.c \ + $(NULL) + +libaccess_rtmpdump_plugin_la_CFLAGS = $(AM_CFLAGS) +libaccess_rtmpdump_plugin_la_LIBADD = $(AM_LIBADD) +libaccess_rtmpdump_plugin_la_DEPENDENCIES = + +libvlc_LTLIBRARIES += libaccess_rtmpdump_plugin.la That will build the plugin inconditionally which is probably wrong. I guess it should instead look like: libvlc_LTLIBRARIES += $(LTLIBaccess_rtmpdump) EXTRA_LTLIBRARIES += libaccess_rtmpdump_plugin.la diff --git a/modules/access/rtmpdump/access.c b/modules/access/rtmpdump/access.c +#define SOCKSHOST_TEXT N_("Use the specified SOCKS4 proxy") +#define SOCKSHOST_LONGTEXT N_( \ + "Use the specified SOCKS4 proxy. " \ + "By default no proxy is used." ) VLC already defines --socks for this. Do you really need a new option? diff --git a/modules/access/rtmpdump/access.h b/modules/access/rtmpdump/access.h +#ifndef _ACCESS_H_ +#define _ACCESS_H_ 1 That's a bit too generic macro name IMHO. Also you should probably not start with an underscore, as per the C standard. diff --git a/modules/access/rtmpdump/rtmpdump.c b/modules/access/rtmpdump/rtmpdump.c +FILE *netstackdump = 0; +FILE *netstackdump_read = 0; NULL rather than 0. + /* set instance variables from options */ + psz_tmp = var_CreateGetNonEmptyString( p_access, "rtmp-sockshost" ); + STR2AVAL( p_sys->sockshost, psz_tmp ); Should use var_InheritString() instead of var_CreateGetNonEmptyString(). Also, you need to free() the return value somewhere. + psz_tmp = var_CreateGetNonEmptyString( p_access, "rtmp-flashver" ); + STR2AVAL( p_sys->flashver, psz_tmp ); + + psz_tmp = var_CreateGetNonEmptyString( p_access, "rtmp-hostname" ); + STR2AVAL( p_sys->hostname, psz_tmp ); + + psz_tmp = var_CreateGetNonEmptyString( p_access, "rtmp-playpath" ); + STR2AVAL( p_sys->playpath, psz_tmp ); + + psz_tmp = var_CreateGetNonEmptyString( p_access, "rtmp-swfurl" ); + STR2AVAL( p_sys->swfurl, psz_tmp ); + + psz_tmp = var_CreateGetNonEmptyString( p_access, "rtmp-pageurl" ); + STR2AVAL( p_sys->pageurl, psz_tmp ); + + psz_tmp = var_CreateGetNonEmptyString( p_access, "rtmp-app" ); + STR2AVAL( p_sys->app, psz_tmp ); + + psz_tmp = var_CreateGetNonEmptyString( p_access, "rtmp-auth" ); + STR2AVAL( p_sys->auth, psz_tmp ); + + psz_tmp = var_CreateGetNonEmptyString( p_access, "rtmp-swfhash" ); + STR2AVAL( p_sys->swfhash, psz_tmp ); + + psz_tmp = var_CreateGetNonEmptyString( p_access, "rtmp-subscribepath" ); + STR2AVAL( p_sys->subscribepath, psz_tmp ); Same for all of these. + + p_sys->b_livestream = var_CreateGetBool( p_access, "rtmp-livestream" ); + p_sys->i_protocol = var_CreateGetInteger( p_access, "rtmp-protocol" ); + p_sys->i_port = var_CreateGetInteger( p_access, "rtmp-port" ); + p_sys->ui_swfsize = var_CreateGetInteger( p_access, "rtmp-swfsize" ); + p_sys->ui_seek = var_CreateGetInteger( p_access, "rtmp-seek" ); + p_sys->ui_stopoffset = var_CreateGetInteger( p_access, "rtmp-stopoffset" ); + p_sys->l_timeout = var_CreateGetInteger( p_access, "rtmp-timeout" ); + p_sys->i_caching = var_CreateGetInteger( p_access, "rtmp-caching" ); Use var_InheritBool() and var_InheritInteger(). +#ifdef _DEBUG + if ( netstackdump != 0 ) + fclose( netstackdump ); + if ( netstackdump_read != 0 ) + fclose( netstackdump_read ); +#endif Use NULL. diff --git a/modules/access/rtmpdump/rtmpdump.h b/modules/access/rtmpdump/rtmpdump.h +#ifndef _RTMPDUMP_H_ +#define _RTMPDUMP_H_ 1 This is quite generic again. -- R?mi Denis-Courmont From ileoo at videolan.org Tue Jun 29 15:46:11 2010 From: ileoo at videolan.org (Ilkka Ollakka) Date: Tue, 29 Jun 2010 16:46:11 +0300 Subject: [vlc-devel] [vlc-commits] commit: Win32: try to fix atomic adds with InterlockedExchangeAdd iso InterlockedAdd ( Jean-Baptiste Kempf ) In-Reply-To: <20100628234757.4A093FC9B6@albiero.videolan.org> References: <20100628234757.4A093FC9B6@albiero.videolan.org> Message-ID: <20100629134611.GA13404@linux-3azp> On Tue, Jun 29, 2010 at 01:47:57AM +0200, git at videolan.org wrote: > vlc | branch: master | Jean-Baptiste Kempf | Tue Jun 29 01:47:21 2010 +0200| [bde1898a73522e268bbe43c6f5d4da27c4681a45] | committer: Jean-Baptiste Kempf > Win32: try to fix atomic adds with InterlockedExchangeAdd iso InterlockedAdd > { > #if defined (WIN64) > - return InterlockedAdd64 (&atom->s, v); > + return InterlockedExchangeAdd64 (&atom->s, v); > #else > - return InterlockedAdd (&atom->s, v); > + return InterlockedExchangeAdd (&atom->s, v); > #endif Doesn't this return atom->s before add operation, so we should return atom->s after that function? -- Ilkka Ollakka Nature is by and large to be found out of doors, a location where, it cannot be argued, there are never enough comfortable chairs. -- Fran Leibowitz -------------- next part -------------- A non-text attachment was scrubbed... Name: not available Type: application/pgp-signature Size: 490 bytes Desc: not available URL: From thresh at altlinux.ru Tue Jun 29 15:52:18 2010 From: thresh at altlinux.ru (Konstantin Pavlov) Date: Tue, 29 Jun 2010 17:52:18 +0400 Subject: [vlc-devel] [PATCH] Integrate the RTMPdump library to play rtmp and rtmpe streams. In-Reply-To: <201006291641.18397.rem@videolan.org> References: <201006291641.18397.rem@videolan.org> Message-ID: <20100629135218.GS18108@snowwhite.immo> On Tue, Jun 29, 2010 at 04:41:17PM +0300, R?mi Denis-Courmont wrote: > Does librtmp not support pkg-config? It does. > Is it always a static library (otherwise why do we need zlib and OpenSSL)? Yes, only static library is supported for now. -- ?? ??????, ??? ?????? ??????, ? ?????? , ??? ???? ????????. -- ???????? ????????? -------------- next part -------------- A non-text attachment was scrubbed... Name: signature.asc Type: application/pgp-signature Size: 198 bytes Desc: Digital signature URL: From rem at videolan.org Tue Jun 29 16:08:18 2010 From: rem at videolan.org (=?iso-8859-1?q?R=E9mi?= Denis-Courmont) Date: Tue, 29 Jun 2010 17:08:18 +0300 Subject: [vlc-devel] [PATCH] gnutls: search CA in every known locations. In-Reply-To: <1277814683-32725-1-git-send-email-fcvlcdev@free.fr> References: <1277814683-32725-1-git-send-email-fcvlcdev@free.fr> Message-ID: <201006291708.19209.rem@videolan.org> On Tuesday 29 June 2010 15:31:23 Francois Cartegnie, you wrote: > + while(i_length-- > 0) > + { > + psz_path = calloc ( sizeof (char), 1 + strlen (confdir) > + + strlen (stdcafiles[i_length]) ); I think the stack can be used here. The path comes from the user configuration (and is typically hard-coded at build-time anyway). > + if (psz_path != NULL) > + { > + sprintf (psz_path, "%s%s", confdir, stdcafiles[i_length]); > + if (!vlc_stat (psz_path, &t_stat_lstat)) What's the point of this extra check anyway? -- R?mi Denis-Courmont From kamil.klimek at team-solutions.pl Tue Jun 29 15:31:39 2010 From: kamil.klimek at team-solutions.pl (Kamil Klimek) Date: Tue, 29 Jun 2010 15:31:39 +0200 Subject: [vlc-devel] [PATCH] support for stream size in imem access module Message-ID: <6626613A-67F1-47F2-A0D0-17BB4763BBE6@team-solutions.pl> A non-text attachment was scrubbed... Name: 0001-support-for-stream-size-in-imem-access-module.patch Type: application/octet-stream Size: 1520 bytes Desc: not available URL: From dadatis at gmail.com Tue Jun 29 18:45:01 2010 From: dadatis at gmail.com (Daniel Tisza) Date: Tue, 29 Jun 2010 19:45:01 +0300 Subject: [vlc-devel] [PATCH] Integrate the RTMPdump library to play rtmp and rtmpe streams. In-Reply-To: <201006291641.18397.rem@videolan.org> References: <201006291641.18397.rem@videolan.org> Message-ID: Hi, Thanks for the comments. I made the suggested changes. Attached the new independent patch. Can be tested with the playlist from previous message. Detailed comments: > Does librtmp not support pkg-config? Changed to use PKG_CHECK_MODULES in configure.ac > Is it always a static library (otherwise why do we need zlib and OpenSSL)? > This will require GPLv3, oh well. For these I haven't got enough information... Now I just use PKG_CHECK_MODULES, which should take care of zlib and OpenSSL? I did a ./bootstrap, ./configure --enable-rtmpdump and ./compile and there were no problems of missing functions. > That will build the plugin inconditionally which is probably wrong. > I guess it should instead look like: > > libvlc_LTLIBRARIES += $(LTLIBaccess_rtmpdump) > EXTRA_LTLIBRARIES += libaccess_rtmpdump_plugin.la Changed to that. > VLC already defines --socks for this. Do you really need a new option? Removed the own proxy setting. Changed to use the proxy from the variable "socks". > +#ifndef _ACCESS_H_ > +#define _ACCESS_H_ 1 > > That's a bit too generic macro name IMHO. Also you should probably not start > with an underscore, as per the C standard. Changed to HAVE_RTMPDUMP_ACCESS_H > +FILE *netstackdump = 0; > +FILE *netstackdump_read = 0; > > NULL rather than 0. Changed to NULL. > Should use var_InheritString() instead of var_CreateGetNonEmptyString(). > Also, you need to free() the return value somewhere. Changed to var_InheritString(). Added free() in the RTMPClose() function. > Same for all of these. Changed all of them to var_InheritString and added free() calls. > Use var_InheritBool() and var_InheritInteger(). Changed to var_InheritBool(). > Use NULL. Changed to NULL. > +#ifndef _RTMPDUMP_H_ > +#define _RTMPDUMP_H_ 1 > > This is quite generic again. Changed to HAVE_RTMPDUMP_RTMPDUMP_H -------------- next part -------------- A non-text attachment was scrubbed... Name: rtmpdump2.patch Type: text/x-patch Size: 25720 bytes Desc: not available URL: From jmenon86 at gmail.com Tue Jun 29 18:59:40 2010 From: jmenon86 at gmail.com (Jai Menon) Date: Tue, 29 Jun 2010 22:29:40 +0530 Subject: [vlc-devel] [PATCH] MKV : Fix access name check. Message-ID: <1277830780-11619-1-git-send-email-jmenon86@gmail.com> --- modules/demux/mkv/mkv.cpp | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/modules/demux/mkv/mkv.cpp b/modules/demux/mkv/mkv.cpp index b797feb..b1abec9 100644 --- a/modules/demux/mkv/mkv.cpp +++ b/modules/demux/mkv/mkv.cpp @@ -141,7 +141,7 @@ static int Open( vlc_object_t * p_this ) if (var_InheritBool( p_demux, "mkv-preload-local-dir" )) { /* get the files from the same dir from the same family (based on p_demux->psz_path) */ - if (p_demux->psz_path[0] != '\0' && !strcmp(p_demux->psz_access, "")) + if (p_demux->psz_path[0] != '\0' && !strcmp(p_demux->psz_access, "file")) { // assume it's a regular file // get the directory path -- 1.7.1 From rafael.carre at gmail.com Tue Jun 29 19:07:15 2010 From: rafael.carre at gmail.com (=?UTF-8?B?UmFmYcOrbCBDYXJyw6k=?=) Date: Tue, 29 Jun 2010 19:07:15 +0200 Subject: [vlc-devel] [PATCH] Disable faad, lower priority of decoder below avcodec In-Reply-To: <201006270442.10686.rem@videolan.org> References: <1277493903-6356-1-git-send-email-rafael.carre@gmail.com> <636e0e5461096dd70ad1d9db536934ab@chewa.net> <20100625214246.01ffcbed@kru> <201006270442.10686.rem@videolan.org> Message-ID: <20100629190715.332726cf@kru> On Sun, 27 Jun 2010 04:42:10 +0300 "R?mi Denis-Courmont" wrote: > On Friday 25 June 2010 22:42:46 Rafa?l Carr?, you wrote: > > On Fri, 25 Jun 2010 21:29:01 +0200 > > > > R?mi Denis-Courmont wrote: > > > To me, it sounds like we should remove the plugin completely > > > instead > > > > I was removing faad from extras/contrib/src/Distributions/* and I > > noticed maemo.mak says: > > "#.faad -> way slower than libavcodec" > > > > Did you try a fixed point build for faad? > > No. > > > afaics ffmpeg decoder is float only so perhaps it makes sense to > > keep faad for targets without FPU > > N900 has a hardware FPU, as far as I know, though it is not as fast > as the ALU(s). I tested on ARM926ej-s (no FPU), playing one random aac file: time LD_LIBRARY_PATH=src/.libs ./vlc -I dummy --verbose=-1 --no-random --no-media-library --plugin-path=modules /path/to/my.aac vlc://quit --codec XXX (avcodec/faad) --sout "#transcode{acodec=s16l}:std{access=file,mux=raw,dst=/dev/null}" faad -DFIXED_POINT 33.27s user 3.36s system 99% cpu 36.693 total avcodec r23888 76.79s user 7.89s system 99% cpu 1:24.81 total faad 105.78s user 7.74s system 99% cpu 1:53.69 total If you build faad from contribs, Patches/faad-arm-fixed.patch will define FIXED_POINT if gcc defines __arm__ New patch proposed: - Don't build faad in contribs when not targetting arm - Lower faad priority only if HAVE_FPU is 1 -- ? Rafa?l Carr? ? -------------- next part -------------- A non-text attachment was scrubbed... Name: faad.diff Type: text/x-patch Size: 6623 bytes Desc: not available URL: -------------- next part -------------- A non-text attachment was scrubbed... Name: signature.asc Type: application/pgp-signature Size: 198 bytes Desc: not available URL: From fcvlcdev at free.fr Tue Jun 29 19:17:52 2010 From: fcvlcdev at free.fr (Francois Cartegnie) Date: Tue, 29 Jun 2010 19:17:52 +0200 Subject: [vlc-devel] [PATCH] gnutls: search CA in every known locations. In-Reply-To: <201006291708.19209.rem@videolan.org> References: <1277814683-32725-1-git-send-email-fcvlcdev@free.fr> <201006291708.19209.rem@videolan.org> Message-ID: <201006291917.52636.fcvlcdev@free.fr> Le mardi 29 juin 2010, vous avez ?crit : > I think the stack can be used here. The path comes from the user > configuration (and is typically hard-coded at build-time anyway). Not sure I get it. Stack as array or stack as variables ? > > stdcafiles[i_length]); + if (!vlc_stat (psz_path, > > &t_stat_lstat)) > > What's the point of this extra check anyway? Just passing it to gnutls_Addx509File would throw an error message for each try, and a missing alternative file couldn't be a relevant error. Francois From alexo.veto at gmail.com Tue Jun 29 20:09:40 2010 From: alexo.veto at gmail.com (Savin Alex) Date: Tue, 29 Jun 2010 22:09:40 +0400 Subject: [vlc-devel] [patch] add subtitles autodetect In-Reply-To: <201006281659.59842.rem@videolan.org> References: <201006281627.23811.alexo.veto@gmail.com> <201006281659.59842.rem@videolan.org> Message-ID: <201006292209.40944.alexo.veto@gmail.com> ? ????????? ?? 28 ???? 2010 17:59:59 ?? ????????: > On Monday 28 June 2010 15:27:23 Savin Alex, you wrote: > > add subtitles autodetect, > > You can't do that here. stream_ReadLine() is used not only by the subtitle > parsers. You will confuse everything else. thanks for answer, modules/demux/subtitle.c b/modules/demux/subtitle.c static int TextLoad( text_t *txt, stream_t *s ) - is it a good place for my patch? also: (my previous patch don't touch "UTF-16LE", "UTF-16BE" and "UTF-8" stream, and work only at begin of stream - is it really broken?) > > it also required enca library, > > should work, but I don't know how add enca library to vlc build config, > > so can't test > > You would need to patch configure.ac now I read autoconf documenation..., I will send final(tested) version later diff --git a/modules/demux/subtitle.c b/modules/demux/subtitle.c index b8021d8..aa73e97 100644 --- a/modules/demux/subtitle.c +++ b/modules/demux/subtitle.c @@ -37,6 +37,10 @@ #include #include +#include +#include +#include +#include #include #include @@ -754,6 +758,16 @@ static int TextLoad( text_t *txt, stream_t *s ) if( !txt->line ) return VLC_ENOMEM; + const int bufferlen=16384; + char buffer[bufferlen]; + int bufferpos=0, bufferposnext=0; + char lang[3]; + if (getenv("LANG")){ + strncpy(lang, getenv("LANG"), 2); + lang[2] = 0; + }else + lang[0]=0; + /* load the complete file */ for( ;; ) { @@ -761,7 +775,18 @@ static int TextLoad( text_t *txt, stream_t *s ) if( psz == NULL ) break; - + + if (lang[0] != 0 && bufferpos != bufferlen){ + if ((bufferposnext+=strlen(psz)) < bufferlen ){ + strcpy((buffer+bufferpos), psz); + bufferpos = bufferposnext; + }else{ + strncpy((buffer+bufferpos), psz, (strlen(psz)-(bufferposnext-bufferlen))); + bufferpos=bufferlen; + buffer[bufferlen-1] = 0; + } + } + txt->line[txt->i_line_count++] = psz; if( txt->i_line_count >= i_line_max ) { @@ -778,6 +803,34 @@ static int TextLoad( text_t *txt, stream_t *s ) return VLC_EGENERIC; } + if (lang[0] != 0){ + EncaAnalyser analyser; + EncaEncoding encoding; + const char *psz_encoding = NULL; + + analyser = enca_analyser_alloc((const char *)lang); + if (analyser){ + encoding = enca_analyse(analyser, (unsigned char *)buffer, (size_t)bufferlen); + if (encoding.charset != ENCA_CS_UNKNOWN){ + psz_encoding = enca_charset_name(encoding.charset, ENCA_NAME_STYLE_ICONV); + iconv_t icnv = iconv_open("UTF-8", psz_encoding); + if (icnv != (iconv_t)-1){ + int linelen; + //char **ptr_line = NULL; + for (int i=0; i <= i_line_count; i++){ + linelen = strlen(txt->line[i]); + realloc (txt->line[i], linelen * 2 * sizeof( char ) ); + if( !txt->line[i] ) + return VLC_ENOMEM; + iconv(icnv, &txt->line[i], linelen, &txt->line[i], linelen*2); + } + iconv_close(icnv); + } + } + enca_analyser_free (analyser); + } + } + return VLC_SUCCESS; } static void TextUnload( text_t *txt ) -- Best regards, ????????? mailto:alexo.veto at gmail.com -------------- next part -------------- A non-text attachment was scrubbed... Name: vlc_sub_enc_autodetect2.patch Type: text/x-patch Size: 3824 bytes Desc: not available URL: From xtophe at chewa.net Tue Jun 29 21:35:23 2010 From: xtophe at chewa.net (Christophe Mutricy) Date: Tue, 29 Jun 2010 21:35:23 +0200 Subject: [vlc-devel] [PATCH] Integrate the RTMPdump library to play rtmp and rtmpe streams. In-Reply-To: References: <201006291641.18397.rem@videolan.org> Message-ID: <20100629193523.GW30509@chewa.net> On Tue, Jun 29, 10 at 19:45 +0300, Daniel Tisza wrote: > > +#define _ACCESS_H_ 1 > > > > That's a bit too generic macro name IMHO. Also you should probably not start > > with an underscore, as per the C standard. > > Changed to HAVE_RTMPDUMP_ACCESS_H This time it look too much like the define created by autoconf > Changed to HAVE_RTMPDUMP_RTMPDUMP_H Idem > +AC_ARG_ENABLE(rtmpdump, > + [ --enable-rtmpdump RTMPDump access plugin (default disabled)]) > +if test "${enable_rtmpdump}" = "yes"; then > + PKG_CHECK_MODULES(RTMPDUMP, [librtmp], > + [ > + VLC_ADD_PLUGIN([access_rtmpdump]) > + VLC_ADD_LIBS([access_rtmpdump], [$RTMPDUMP_LIBS]) > + ], > + [ AC_MSG_ERROR([Cannot find librtmp library...]) > + ] ) > +fi You could also use PKG_ENABLE_MODULES_VLC() > diff --git a/modules/access/rtmpdump/Modules.am b/modules/access/rtmpdump/Modules.am > @@ -0,0 +1,11 @@ > +libaccess_rtmpdump_plugin_la_SOURCES = \ > + rtmpdump.c \ > + access.c \ > + $(NULL) You also need to list the .h else they don't get distributed. > + * Copyright (C) 2002-2010 the VideoLAN team Are you really relying on pieces of code written in 2008. > +#define FLASHVER_LONGTEXT N_( \ > + "Version of the Flash plugin used to run the SWF player." \ > + "The default is LNX 10,1,53,64" ) Missing space after full-stop > + > +#define HOSTNAME_TEXT N_("Name of the host to connect to") > +#define HOSTNAME_LONGTEXT N_( \ > + "Name of the host to connect to." ) No need of an extra string to repeat yourself. So either you expand this one or shorten the short description (or use the same define for both) > +#define PLAYPATH_TEXT N_("Playpath") > +#define PLAYPATH_LONGTEXT N_( \ > + "Playpath." \ > + "By default no value will be sent." ) Missing space > +#define SWFURL_TEXT N_("URL of the SWF player for the media") > +#define SWFURL_LONGTEXT N_( \ > + "URL of the SWF player for the media." \ > + "By default no value will be sent." ) Idem and in a lot of other define. > +#define SEEK_TEXT N_("Start at num seconds into the stream") > +#define SEEK_LONGTEXT N_( \ > + "Start at num seconds into the stream." \ > + "Not valid for live streams." ) > VLC already has an option for that (--start-time) + > +#define STOPOFFSET_TEXT N_("Stop at num seconds into the stream") > +#define STOPOFFSET_LONGTEXT N_( \ > + "Stop at num seconds into the stream." ) > + Idem Generally, a lot of the long help start by repeating the small help which is not that good. A lot of the shorttext could be shorten: "URL of the SWF player" -> "SWF player URL" and so on. I might have read to quickly but i don't see where you parse the MRL. Things like hostname and port should be passed in the MRL rather than an option. It would be more user-friendly -- Xtophe From rem at videolan.org Tue Jun 29 22:30:53 2010 From: rem at videolan.org (=?UTF-8?Q?R=C3=A9mi_Denis-Courmont?=) Date: Tue, 29 Jun 2010 22:30:53 +0200 Subject: [vlc-devel] [patch] add subtitles autodetect In-Reply-To: <201006292209.40944.alexo.veto@gmail.com> References: <201006281627.23811.alexo.veto@gmail.com> <201006281659.59842.rem@videolan.org> <201006292209.40944.alexo.veto@gmail.com> Message-ID: On Tue, 29 Jun 2010 22:09:40 +0400, Savin Alex wrote: > modules/demux/subtitle.c b/modules/demux/subtitle.c static int TextLoad( > text_t *txt, stream_t *s ) > - is it a good place for my patch? The logical place is wherever iconv() is invoked. You have to test your patches before you send them. -- R?mi Denis-Courmont http://www.remlab.net http://fi.linkedin.com/in/remidenis From remi at remlab.net Wed Jun 30 02:39:13 2010 From: remi at remlab.net (=?ISO-8859-1?Q?R=E9mi?= Denis-Courmont) Date: Tue, 29 Jun 2010 17:39:13 -0700 Subject: [vlc-devel] [vlc-commits] commit: l10n: Khmer update (Khoem Sokhem ) In-Reply-To: <20100629231930.E99B9FCB3A@albiero.videolan.org> References: <20100629231930.E99B9FCB3A@albiero.videolan.org> Message-ID: <1277858353.1434.2.camel@Nokia-N900-51-1> ----- Message d'origine ----- > vlc/vlc-1.1 | branch: master | Khoem Sokhem | Wed Jun > 30 00:07:31 2010 +0100| [f693c68829b7614fce714e2f0345b9802b3e5f62] | committer: > Christophe Mutricy > > l10n: Khmer update considering that my N900 cannot display that translation (lacking font obviously), I must strongly doubt that the CP1252 translation is correct. Maybe one day the translators will start READING the translators mailing list, but it seems like it has not happened. From remi at remlab.net Wed Jun 30 02:47:50 2010 From: remi at remlab.net (=?ISO-8859-1?Q?R=E9mi?= Denis-Courmont) Date: Tue, 29 Jun 2010 17:47:50 -0700 Subject: [vlc-devel] [Translators] VLC 1.1.0 In-Reply-To: <20100629223533.GA30509@chewa.net> References: <20100618181536.GJ30509@chewa.net> <4C25440A.9030005@gnome.hu> <20100629223533.GA30509@chewa.net> Message-ID: <1277858870.1434.7.camel@Nokia-N900-51-1> ----- Message d'origine ----- > On Sat, Jun 26, 10 at 02:04 +0200, Gabor Kelemen wrote: > > I have updated the Hungarian translation, please commit it for 1.1.1: There is one new string in 1.1.1 by the way, and it was not added. Also, I had to add the "translation" for "CP1252" even though I know nothing about Hungarian. I am quite sure I mentioned it on the translator mailing list earlier... Please check those two. > > Also, I noticed that the new IMDB and allocine extensions are not? > > translatable at all (and that the allocine extension speaks french) -? > > can these be made translatable? I do not feel that extensions should be part of the "vlc" translation domain in any case. Otherwise they should not be extensions in the first place, should they? And where would we draw the line anyway?? IMHO, vlc.pot is way too big already with all those useless settings long descriptions that nobody ever reads. -- R?mi From dadatis at gmail.com Wed Jun 30 03:49:15 2010 From: dadatis at gmail.com (Daniel Tisza) Date: Wed, 30 Jun 2010 04:49:15 +0300 Subject: [vlc-devel] [PATCH] Integrate the RTMPdump library to play rtmp and rtmpe streams. In-Reply-To: <20100629193523.GW30509@chewa.net> References: <201006291641.18397.rem@videolan.org> <20100629193523.GW30509@chewa.net> Message-ID: Hi, Thanks for the comments. I made the suggested changes (details below). Attached the new independent patch. Can be tested with the playlist from previous message. >> Changed to HAVE_RTMPDUMP_ACCESS_H >> Changed to HAVE_RTMPDUMP_RTMPDUMP_H > This time it look too much like the define created by autoconf Changed to RTMPDUMP_ACCESS_HEADER_H and RTMPDUMP_HEADER_H. > You could also use PKG_ENABLE_MODULES_VLC() Changed to use PKG_ENABLE_MODULES_VLC(). This really is much nicer. >> +libaccess_rtmpdump_plugin_la_SOURCES = \ >> + ? ? rtmpdump.c \ >> + ? ? access.c \ >> + ? ? $(NULL) > > You also need to list the .h else they don't get distributed. Changed to include the .h >> + * Copyright (C) 2002-2010 the VideoLAN team > > Are you really relying on pieces of code written in 2008. The patch contains basically new files...changed to Copyright (C) 2010. Now it would reflect the creation/modification date. >> +#define FLASHVER_LONGTEXT N_( \ >> + ? ?"Version of the Flash plugin used to run the SWF player." \ >> + ? ?"The default is LNX 10,1,53,64" ) > > Missing space after full-stops Added spaces after full-stops. >> +#define HOSTNAME_TEXT N_("Name of the host to connect to") >> +#define HOSTNAME_LONGTEXT N_( \ >> + ? ?"Name of the host to connect to." ) > No need of an extra string to repeat yourself. So either you expand this > one or shorten the short description (or use the same define for both) Shortened the short descriptions and removed repetition. > VLC already has an option for that (--start-time) Changed to use VLC options start-time and run-time. > Generally, a lot of the long help start by repeating the small help > which is not that good. Removed repetition. > A lot of the shorttext could be shorten: "URL of the SWF player" -> "SWF > player URL" and so on. Shortened short descriptions. > I might have read to quickly but i don't see where you parse the MRL. > Things like hostname and port should be passed in the MRL rather than an > option. It would be more user-friendly Changed to parsing the MRL from p_access. It is still possible to override the parsed value(s) with option(s), if given. This overriding of individual properties is one of the desirable features of librtmp. -------------- next part -------------- A non-text attachment was scrubbed... Name: rtmpdump3.patch Type: text/x-patch Size: 25091 bytes Desc: not available URL: From jb at videolan.org Wed Jun 30 10:02:09 2010 From: jb at videolan.org (Jean-Baptiste K) Date: Wed, 30 Jun 2010 10:02:09 +0200 Subject: [vlc-devel] [vlc-commits] commit: l10n: Khmer update (Khoem Sokhem ) In-Reply-To: <1277858353.1434.2.camel@Nokia-N900-51-1> References: <20100629231930.E99B9FCB3A@albiero.videolan.org> <1277858353.1434.2.camel@Nokia-N900-51-1> Message-ID: <20100630080208.GA21148@videolan.org> On Tue, Jun 29, 2010 at 05:39:13PM -0700, R?mi Denis-Courmont wrote : > considering that my N900 cannot display that translation (lacking font obviously), I must strongly doubt that the CP1252 translation is correct. Maybe one day the translators will start READING the translators mailing list, but it seems like it has not happened. ahahah. And that day, Windows will become a cool OS. Same as Hurd... And MN will join IRC. And VLC will be simple to compile. :D -- Coin And my mother will be queen of england :) From rem at videolan.org Wed Jun 30 13:01:20 2010 From: rem at videolan.org (=?iso-8859-1?q?R=E9mi?= Denis-Courmont) Date: Wed, 30 Jun 2010 14:01:20 +0300 Subject: [vlc-devel] [PATCH] MKV : Fix access name check. In-Reply-To: <1277830780-11619-1-git-send-email-jmenon86@gmail.com> References: <1277830780-11619-1-git-send-email-jmenon86@gmail.com> Message-ID: <201006301401.20597.rem@videolan.org> On Tuesday 29 June 2010 19:59:40 Jai Menon, you wrote: > --- > modules/demux/mkv/mkv.cpp | 2 +- > 1 files changed, 1 insertions(+), 1 deletions(-) > > diff --git a/modules/demux/mkv/mkv.cpp b/modules/demux/mkv/mkv.cpp > index b797feb..b1abec9 100644 > --- a/modules/demux/mkv/mkv.cpp > +++ b/modules/demux/mkv/mkv.cpp > @@ -141,7 +141,7 @@ static int Open( vlc_object_t * p_this ) > if (var_InheritBool( p_demux, "mkv-preload-local-dir" )) > { > /* get the files from the same dir from the same family (based on > p_demux->psz_path) */ - if (p_demux->psz_path[0] != '\0' && > !strcmp(p_demux->psz_access, "")) + if (p_demux->psz_path[0] != > '\0' && !strcmp(p_demux->psz_access, "file")) { > // assume it's a regular file > // get the directory path It's a bit more complicated. We would need to convert psz_path from file:// URI to local path format. I guess there is a similar bug in the avformat plugin and in all file-capable access_demux plugins. So I guess we need to change demux_t like I changed access_t a while ago: remove psz_path, add psz_location and psz_filepath. -- R?mi Denis-Courmont From dilaroga at gmail.com Wed Jun 30 13:33:57 2010 From: dilaroga at gmail.com (Dilaroga dev) Date: Wed, 30 Jun 2010 13:33:57 +0200 Subject: [vlc-devel] PATCH: OS X remove the use of setjmp()/longjmp() In-Reply-To: References: <9C352D22-3401-488A-AE71-40FE155B2F6F@gmail.com> <7f4149bb0912260634q7d20300bn3f2f5a24afa360fe@mail.gmail.com> <537B05C9-3F70-4F7B-971A-04ED11990D56@gmail.com> <7f4149bb0912260752m21347f31r66927616fb104e64@mail.gmail.com> Message-ID: 2009/12/26 Pierre d'Herbemont > On Sat, Dec 26, 2009 at 4:52 PM, Brian Weaver > wrote: > > It should if it did before; from a logical perspective it works the > > same as before. Previously the code was using setjmp()/longjmp() to > > return control back to the caller of NSApp run(). By invoking the > > 'stop' selector instead of 'quit' the Cocoa framework will return > > control after processing the stop event. It accomplishes the same end > > result, but avoid any potential side effects from using jump routines > > in a managed run time environment. > > Sure, but when you select the Quit menu from the Dock it sends a -(id) > terminate:, so you'll need to send a -stop from here. Or so I believe, > that was the question asked :-) > > You're right, and the libvlc does not exit properly (ML is not saved : #3825). Unfortunately, we are not able to change the action-method sent by this standard menu item. In attachment i provided a patch that overrides the terminate: method to call a stop:. -- Sebastien Zwickert -------------- next part -------------- An HTML attachment was scrubbed... URL: -------------- next part -------------- A non-text attachment was scrubbed... Name: 0001-MacOS-fixes-3825.-Since-af97f24d528acab89969d6541.patch Type: application/octet-stream Size: 1067 bytes Desc: not available URL: From thresh at altlinux.ru Wed Jun 30 13:50:53 2010 From: thresh at altlinux.ru (Konstantin Pavlov) Date: Wed, 30 Jun 2010 15:50:53 +0400 Subject: [vlc-devel] [PATCH] Integrate the RTMPdump library to play rtmp and rtmpe streams. In-Reply-To: <20100629135218.GS18108@snowwhite.immo> References: <201006291641.18397.rem@videolan.org> <20100629135218.GS18108@snowwhite.immo> Message-ID: <20100630115053.GB15359@snowwhite.immo> On Tue, Jun 29, 2010 at 05:52:18PM +0400, Konstantin Pavlov wrote: > On Tue, Jun 29, 2010 at 04:41:17PM +0300, R?mi Denis-Courmont wrote: > > Does librtmp not support pkg-config? > > It does. > > > Is it always a static library (otherwise why do we need zlib and OpenSSL)? > > Yes, only static library is supported for now. I'm actually wrong, 2.2f will have shared library support, see http://lists.mplayerhq.hu/pipermail/rtmpdump/2010-June/000981.html -- Love conquers all things; let us too surrender to love. -- Publius Vergilius Maro (Virgil) -------------- next part -------------- A non-text attachment was scrubbed... Name: signature.asc Type: application/pgp-signature Size: 198 bytes Desc: Digital signature URL: From mans at mansr.com Wed Jun 30 14:28:59 2010 From: mans at mansr.com (=?iso-8859-1?Q?M=E5ns_Rullg=E5rd?=) Date: Wed, 30 Jun 2010 13:28:59 +0100 Subject: [vlc-devel] [PATCH] Disable faad, lower priority of decoder below avcodec References: <1277493903-6356-1-git-send-email-rafael.carre@gmail.com> <636e0e5461096dd70ad1d9db536934ab@chewa.net> <20100625214246.01ffcbed@kru> <201006270442.10686.rem@videolan.org> Message-ID: "R?mi Denis-Courmont" writes: > On Friday 25 June 2010 22:42:46 Rafa?l Carr?, you wrote: >> On Fri, 25 Jun 2010 21:29:01 +0200 >> >> R?mi Denis-Courmont wrote: >> > To me, it sounds like we should remove the plugin completely instead >> >> I was removing faad from extras/contrib/src/Distributions/* and I >> noticed maemo.mak says: >> "#.faad -> way slower than libavcodec" >> >> Did you try a fixed point build for faad? > > No. > >> afaics ffmpeg decoder is float only so perhaps it makes sense to keep >> faad for targets without FPU > > N900 has a hardware FPU, as far as I know, though it is not as fast as the > ALU(s). N900 has a Cortex-A8 core, which has a slow scalar FPU and a fast NEON unit. FFmpeg uses NEON in AAC. -- M?ns Rullg?rd mans at mansr.com From jmenon86 at gmail.com Wed Jun 30 20:53:53 2010 From: jmenon86 at gmail.com (Jai Menon) Date: Thu, 1 Jul 2010 00:23:53 +0530 Subject: [vlc-devel] [PATCH] AVCodec : Add the MPEG1 codec ID to the map table. Message-ID: <1277924033-7658-1-git-send-email-jmenon86@gmail.com> --- modules/codec/avcodec/fourcc.c | 1 + 1 files changed, 1 insertions(+), 0 deletions(-) diff --git a/modules/codec/avcodec/fourcc.c b/modules/codec/avcodec/fourcc.c index e47828f..9d51e58 100644 --- a/modules/codec/avcodec/fourcc.c +++ b/modules/codec/avcodec/fourcc.c @@ -53,6 +53,7 @@ static const struct */ { VLC_CODEC_MPGV, CODEC_ID_MPEG2VIDEO, VIDEO_ES }, + { VLC_CODEC_MPGV, CODEC_ID_MPEG1VIDEO, VIDEO_ES }, { VLC_CODEC_MP4V, CODEC_ID_MPEG4, VIDEO_ES }, /* 3ivx delta 3.5 Unsupported -- 1.7.1