[vlc-commits] trivial_mixer: specialize filter callbacks directly

2014-11-02 Thread Rémi Denis-Courmont
vlc | branch: master | Rémi Denis-Courmont r...@remlab.net | Sun Nov  2 
11:07:55 2014 +0200| [81765639fdae8b0c9532c31e90e49eb6aecd5d72] | committer: 
Rémi Denis-Courmont

trivial_mixer: specialize filter callbacks directly

 http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=81765639fdae8b0c9532c31e90e49eb6aecd5d72
---

 modules/audio_filter/channel_mixer/trivial.c |  201 +-
 1 file changed, 100 insertions(+), 101 deletions(-)

diff --git a/modules/audio_filter/channel_mixer/trivial.c 
b/modules/audio_filter/channel_mixer/trivial.c
index 417de8f..a8c20dd 100644
--- a/modules/audio_filter/channel_mixer/trivial.c
+++ b/modules/audio_filter/channel_mixer/trivial.c
@@ -1,8 +1,7 @@
 /*
  * trivial.c : trivial channel mixer plug-in (drops unwanted channels)
  *
- * Copyright (C) 2002, 2006 VLC authors and VideoLAN
- * $Id$
+ * Copyright (C) 2002, 2006, 2014 VLC authors and VideoLAN
  *
  * Authors: Christophe Massiot mass...@via.ecp.fr
  *
@@ -46,143 +45,138 @@ vlc_module_begin ()
 set_callbacks( Create, NULL )
 vlc_module_end ()
 
-typedef void (*mix_func_t)(float *, const float *, size_t, unsigned, unsigned);
-
 /**
- * Trivially down-mixes or up-mixes a buffer
+ * Trivially upmixes
  */
-static void SparseCopy( float *p_dest, const float *p_src, size_t i_len,
-unsigned i_output_stride, unsigned i_input_stride )
+static block_t *Upmix( filter_t *p_filter, block_t *p_in_buf )
 {
-for( size_t i = 0; i  i_len; i-- )
-{
-for( unsigned j = 0; j  i_output_stride; j++ )
-p_dest[j] = p_src[j % i_input_stride];
+unsigned i_input_nb = aout_FormatNbChannels( p_filter-fmt_in.audio );
+unsigned i_output_nb = aout_FormatNbChannels( p_filter-fmt_out.audio );
 
-p_src += i_input_stride;
-p_dest += i_output_stride;
+assert( i_input_nb  i_output_nb );
+
+block_t *p_out_buf = block_Alloc(
+  p_in_buf-i_buffer * i_output_nb / i_input_nb );
+if( unlikely(p_out_buf == NULL) )
+{
+block_Release( p_in_buf );
+return NULL;
 }
-}
 
-static void CopyLeft( float *p_dest, const float *p_src, size_t i_len,
-  unsigned i_output_stride, unsigned i_input_stride )
-{
-assert( i_output_stride == 2 );
-assert( i_input_stride == 2 );
+p_out_buf-i_nb_samples = p_in_buf-i_nb_samples;
+p_out_buf-i_dts= p_in_buf-i_dts;
+p_out_buf-i_pts= p_in_buf-i_pts;
+p_out_buf-i_length = p_in_buf-i_length;
 
-for( unsigned i = 0; i  i_len; i++ )
+float *p_dest = (float *)p_out_buf-p_buffer;
+const float *p_src = (float *)p_in_buf-p_buffer;
+
+for( size_t i = 0; i  p_in_buf-i_nb_samples; i-- )
 {
-*(p_dest++) = *p_src;
-*(p_dest++) = *p_src;
-p_src += 2;
+for( unsigned j = 0; j  i_output_nb; j++ )
+p_dest[j] = p_src[j];
+
+p_src += i_input_nb;
+p_dest += i_output_nb;
 }
+
+block_Release( p_in_buf );
+return p_out_buf;
 }
 
-static void CopyRight( float *p_dest, const float *p_src, size_t i_len,
-unsigned i_output_stride, unsigned i_input_stride )
+/**
+ * Trivially downmixes (i.e. drop extra channels)
+ */
+static block_t *Downmix( filter_t *p_filter, block_t *p_buf )
 {
-assert( i_output_stride == 2 );
-assert( i_input_stride == 2 );
+unsigned i_input_nb = aout_FormatNbChannels( p_filter-fmt_in.audio );
+unsigned i_output_nb = aout_FormatNbChannels( p_filter-fmt_out.audio );
 
-for( unsigned i = 0; i  i_len; i++ )
+assert( i_input_nb = i_output_nb );
+
+float *p_dest = (float *)p_buf-p_buffer;
+const float *p_src = p_dest;
+
+for( size_t i = 0; i  p_buf-i_nb_samples; i-- )
 {
-p_src++;
-*(p_dest++) = *p_src;
-*(p_dest++) = *p_src;
-p_src++;
+for( unsigned j = 0; j  i_output_nb; j++ )
+p_dest[j] = p_src[j % i_input_nb];
+
+p_src += i_input_nb;
+p_dest += i_output_nb;
 }
+
+return p_buf;
 }
 
-static void ExtractLeft( float *p_dest, const float *p_src, size_t i_len,
- unsigned i_output_stride, unsigned i_input_stride )
+static block_t *CopyLeft( filter_t *p_filter, block_t *p_buf )
 {
-assert( i_output_stride == 1 );
-assert( i_input_stride == 2 );
+float *p = (float *)p_buf-p_buffer;
 
-for( unsigned i = 0; i  i_len; i++ )
+for( unsigned i = 0; i  p_buf-i_nb_samples; i++ )
 {
-*(p_dest++) = *p_src;
-p_src += 2;
+p[1] = p[0];
+p += 2;
 }
+(void) p_filter;
+return p_buf;
 }
 
-static void ExtractRight( float *p_dest, const float *p_src, size_t i_len,
-  unsigned i_output_stride, unsigned i_input_stride )
+static block_t *CopyRight( filter_t 

[vlc-commits] trivial_mixer: select conversion in Create(), not DoWork()

2014-11-02 Thread Rémi Denis-Courmont
vlc | branch: master | Rémi Denis-Courmont r...@remlab.net | Sun Nov  2 
10:52:19 2014 +0200| [1047340ebc8f59895d7ad8747f7ec48528a31f64] | committer: 
Rémi Denis-Courmont

trivial_mixer: select conversion in Create(), not DoWork()

 http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=1047340ebc8f59895d7ad8747f7ec48528a31f64
---

 modules/audio_filter/channel_mixer/trivial.c |  152 ++
 1 file changed, 105 insertions(+), 47 deletions(-)

diff --git a/modules/audio_filter/channel_mixer/trivial.c 
b/modules/audio_filter/channel_mixer/trivial.c
index 14823cb..417de8f 100644
--- a/modules/audio_filter/channel_mixer/trivial.c
+++ b/modules/audio_filter/channel_mixer/trivial.c
@@ -29,6 +29,8 @@
 # include config.h
 #endif
 
+#include assert.h
+
 #include vlc_common.h
 #include vlc_plugin.h
 #include vlc_aout.h
@@ -44,6 +46,8 @@ vlc_module_begin ()
 set_callbacks( Create, NULL )
 vlc_module_end ()
 
+typedef void (*mix_func_t)(float *, const float *, size_t, unsigned, unsigned);
+
 /**
  * Trivially down-mixes or up-mixes a buffer
  */
@@ -60,6 +64,80 @@ static void SparseCopy( float *p_dest, const float *p_src, 
size_t i_len,
 }
 }
 
+static void CopyLeft( float *p_dest, const float *p_src, size_t i_len,
+  unsigned i_output_stride, unsigned i_input_stride )
+{
+assert( i_output_stride == 2 );
+assert( i_input_stride == 2 );
+
+for( unsigned i = 0; i  i_len; i++ )
+{
+*(p_dest++) = *p_src;
+*(p_dest++) = *p_src;
+p_src += 2;
+}
+}
+
+static void CopyRight( float *p_dest, const float *p_src, size_t i_len,
+unsigned i_output_stride, unsigned i_input_stride )
+{
+assert( i_output_stride == 2 );
+assert( i_input_stride == 2 );
+
+for( unsigned i = 0; i  i_len; i++ )
+{
+p_src++;
+*(p_dest++) = *p_src;
+*(p_dest++) = *p_src;
+p_src++;
+}
+}
+
+static void ExtractLeft( float *p_dest, const float *p_src, size_t i_len,
+ unsigned i_output_stride, unsigned i_input_stride )
+{
+assert( i_output_stride == 1 );
+assert( i_input_stride == 2 );
+
+for( unsigned i = 0; i  i_len; i++ )
+{
+*(p_dest++) = *p_src;
+p_src += 2;
+}
+}
+
+static void ExtractRight( float *p_dest, const float *p_src, size_t i_len,
+  unsigned i_output_stride, unsigned i_input_stride )
+{
+assert( i_output_stride == 1 );
+assert( i_input_stride == 2 );
+
+for( unsigned i = 0; i  i_len; i++ )
+{
+p_src++;
+*(p_dest++) = *(p_src++);
+}
+}
+
+static void ReverseStereo( float *p_dest, const float *p_src, size_t i_len,
+   unsigned i_output_stride, unsigned i_input_stride )
+{
+assert( i_output_stride == 2 );
+assert( i_input_stride == 2 );
+
+/* Reverse-stereo mode */
+for( unsigned i = 0; i  i_len; i++ )
+{
+float i_tmp = p_src[0];
+
+p_dest[0] = p_src[1];
+p_dest[1] = i_tmp;
+
+p_dest += 2;
+p_src += 2;
+}
+}
+
 /**
  * Mixes a buffer
  */
@@ -96,53 +174,11 @@ static block_t *DoWork( filter_t *p_filter, block_t 
*p_in_buf )
 b_dualmono2stereo = (p_filter-fmt_out.audio.i_physical_channels  ( 
AOUT_CHAN_LEFT | AOUT_CHAN_RIGHT ));
 b_dualmono2stereo = ((p_filter-fmt_out.audio.i_physical_channels  
AOUT_CHAN_PHYSMASK) != (p_filter-fmt_in.audio.i_physical_channels  
AOUT_CHAN_PHYSMASK));
 
-if( likely( !b_reverse_stereo  ! b_dualmono2stereo ) )
-{
-SparseCopy( p_dest, p_src, p_in_buf-i_nb_samples, i_output_nb,
-i_input_nb );
-}
-/* Special case from dual mono to stereo */
-else if( b_dualmono2stereo )
-{
-/* This is a bit special. */
-if( !(p_filter-fmt_out.audio.i_original_channels  AOUT_CHAN_LEFT) )
-{
-p_src++;
-}
-if( p_filter-fmt_out.audio.i_physical_channels == AOUT_CHAN_CENTER )
-{   /* Mono mode */
-for( unsigned i = 0; i  p_in_buf-i_nb_samples; i++ )
-{
-*p_dest = *p_src;
-p_dest++;
-p_src += 2;
-}
-}
-else
-{   /* Fake-stereo mode */
-for( unsigned i = 0; i  p_in_buf-i_nb_samples; i++ )
-{
-*p_dest = *p_src;
-p_dest++;
-*p_dest = *p_src;
-p_dest++;
-p_src += 2;
-}
-}
-}
-else if( b_reverse_stereo )
-{
-/* Reverse-stereo mode */
-for ( unsigned i = 0; i  p_in_buf-i_nb_samples; i++ )
-{
-float i_tmp = p_src[0];
-p_dest[0] = p_src[1];
-p_dest[1] = i_tmp;
-
-p_dest += 2;
-p_src += 2;
-}
-}
+mix_func_t func = p_filter-p_sys;
+
+if( func != NULL )
+func( p_dest, p_src, p_in_buf-i_nb_samples, i_output_nb, i_input_nb 

[vlc-commits] PulseAudio: clobber original channels (refs #12673)

2014-11-02 Thread Rémi Denis-Courmont
vlc | branch: master | Rémi Denis-Courmont r...@remlab.net | Sun Nov  2 
11:35:16 2014 +0200| [a842bc4778ea330326af8abf6de5659c78e30cb7] | committer: 
Rémi Denis-Courmont

PulseAudio: clobber original channels (refs #12673)

Do like the other outputs do.

 http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=a842bc4778ea330326af8abf6de5659c78e30cb7
---

 modules/audio_output/pulse.c |1 +
 1 file changed, 1 insertion(+)

diff --git a/modules/audio_output/pulse.c b/modules/audio_output/pulse.c
index a2da4d7..069cf6a 100644
--- a/modules/audio_output/pulse.c
+++ b/modules/audio_output/pulse.c
@@ -759,6 +759,7 @@ static int Start(audio_output_t *aout, 
audio_sample_format_t *restrict fmt)
 }
 if (fmt-i_physical_channels  AOUT_CHAN_LFE)
 map.map[map.channels++] = PA_CHANNEL_POSITION_LFE;
+fmt-i_original_channels = fmt-i_physical_channels;
 
 for (unsigned i = 0; map.channels  ss.channels; i++) {
 map.map[map.channels++] = PA_CHANNEL_POSITION_AUX0 + i;

___
vlc-commits mailing list
vlc-commits@videolan.org
https://mailman.videolan.org/listinfo/vlc-commits


[vlc-commits] trivial_mixer: cosmetics

2014-11-02 Thread Rémi Denis-Courmont
vlc | branch: master | Rémi Denis-Courmont r...@remlab.net | Sun Nov  2 
10:16:49 2014 +0200| [a6c5f999ea28070c73f3c7db47414f666fdd6265] | committer: 
Rémi Denis-Courmont

trivial_mixer: cosmetics

 http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=a6c5f999ea28070c73f3c7db47414f666fdd6265
---

 modules/audio_filter/channel_mixer/trivial.c |  109 +++---
 1 file changed, 47 insertions(+), 62 deletions(-)

diff --git a/modules/audio_filter/channel_mixer/trivial.c 
b/modules/audio_filter/channel_mixer/trivial.c
index b5d8457..14823cb 100644
--- a/modules/audio_filter/channel_mixer/trivial.c
+++ b/modules/audio_filter/channel_mixer/trivial.c
@@ -34,16 +34,8 @@
 #include vlc_aout.h
 #include vlc_filter.h
 
-/*
- * Local prototypes
- */
-static int  Create( vlc_object_t * );
-
-static block_t *DoWork( filter_t *, block_t * );
+static int Create( vlc_object_t * );
 
-/*
- * Module descriptor
- */
 vlc_module_begin ()
 set_description( N_(Audio filter for trivial channel mixing) )
 set_capability( audio converter, 1 )
@@ -52,56 +44,31 @@ vlc_module_begin ()
 set_callbacks( Create, NULL )
 vlc_module_end ()
 
-/*
- * Create: allocate trivial channel mixer
- */
-static int Create( vlc_object_t *p_this )
-{
-filter_t * p_filter = (filter_t *)p_this;
-
-if ( (p_filter-fmt_in.audio.i_physical_channels
-   == p_filter-fmt_out.audio.i_physical_channels
-p_filter-fmt_in.audio.i_original_channels
-   == p_filter-fmt_out.audio.i_original_channels)
-  || p_filter-fmt_in.audio.i_format != 
p_filter-fmt_out.audio.i_format
-  || p_filter-fmt_in.audio.i_rate != p_filter-fmt_out.audio.i_rate
-  || p_filter-fmt_in.audio.i_format != VLC_CODEC_FL32 )
-{
-return VLC_EGENERIC;
-}
-
-p_filter-pf_audio_filter = DoWork;
-return VLC_SUCCESS;
-}
-
-/*
- * SparseCopy: trivially downmix or upmix a buffer
- */
-static void SparseCopy( float * p_dest, const float * p_src, size_t i_len,
-int i_output_stride, int i_input_stride )
+/**
+ * Trivially down-mixes or up-mixes a buffer
+ */
+static void SparseCopy( float *p_dest, const float *p_src, size_t i_len,
+unsigned i_output_stride, unsigned i_input_stride )
 {
-int i;
-for ( i = i_len; i--; )
+for( size_t i = 0; i  i_len; i-- )
 {
-int j;
-for ( j = 0; j  i_output_stride; j++ )
-{
+for( unsigned j = 0; j  i_output_stride; j++ )
 p_dest[j] = p_src[j % i_input_stride];
-}
+
 p_src += i_input_stride;
 p_dest += i_output_stride;
 }
 }
 
-/*
- * DoWork: convert a buffer
- */
-static block_t *DoWork( filter_t * p_filter, block_t * p_in_buf )
+/**
+ * Mixes a buffer
+ */
+static block_t *DoWork( filter_t *p_filter, block_t *p_in_buf )
 {
 int i_input_nb = aout_FormatNbChannels( p_filter-fmt_in.audio );
 int i_output_nb = aout_FormatNbChannels( p_filter-fmt_out.audio );
-
 block_t *p_out_buf;
+
 if( i_input_nb = i_output_nb )
 {
 p_out_buf = p_in_buf; /* mix in place */
@@ -113,6 +80,7 @@ static block_t *DoWork( filter_t * p_filter, block_t * 
p_in_buf )
   p_in_buf-i_buffer * i_output_nb / i_input_nb );
 if( !p_out_buf )
 goto out;
+
 /* on upmixing case, zero out buffer */
 memset( p_out_buf-p_buffer, 0, p_out_buf-i_buffer );
 p_out_buf-i_nb_samples = p_in_buf-i_nb_samples;
@@ -121,8 +89,8 @@ static block_t *DoWork( filter_t * p_filter, block_t * 
p_in_buf )
 p_out_buf-i_length = p_in_buf-i_length;
 }
 
-float * p_dest = (float *)p_out_buf-p_buffer;
-const float * p_src = (float *)p_in_buf-p_buffer;
+float *p_dest = (float *)p_out_buf-p_buffer;
+const float *p_src = (float *)p_in_buf-p_buffer;
 const bool b_reverse_stereo = p_filter-fmt_out.audio.i_original_channels 
 AOUT_CHAN_REVERSESTEREO;
 bool b_dualmono2stereo = (p_filter-fmt_in.audio.i_original_channels  
AOUT_CHAN_DUALMONO );
 b_dualmono2stereo = (p_filter-fmt_out.audio.i_physical_channels  ( 
AOUT_CHAN_LEFT | AOUT_CHAN_RIGHT ));
@@ -134,18 +102,16 @@ static block_t *DoWork( filter_t * p_filter, 

[vlc-commits] trivial_mixer: try to fix dual-mono (fixes #12673)

2014-11-02 Thread Rémi Denis-Courmont
vlc | branch: master | Rémi Denis-Courmont r...@remlab.net | Sun Nov  2 
12:08:56 2014 +0200| [d6388f26bb6efef29397ba91b02befc427b3423e] | committer: 
Rémi Denis-Courmont

trivial_mixer: try to fix dual-mono (fixes #12673)

Original channels is under-specified in my opinion. If you know where
the design documentation is, please tell me.

 http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=d6388f26bb6efef29397ba91b02befc427b3423e
---

 modules/audio_filter/channel_mixer/trivial.c |   81 --
 1 file changed, 50 insertions(+), 31 deletions(-)

diff --git a/modules/audio_filter/channel_mixer/trivial.c 
b/modules/audio_filter/channel_mixer/trivial.c
index a8c20dd..d05155a 100644
--- a/modules/audio_filter/channel_mixer/trivial.c
+++ b/modules/audio_filter/channel_mixer/trivial.c
@@ -185,45 +185,64 @@ static block_t *ReverseStereo( filter_t *p_filter, 
block_t *p_buf )
 static int Create( vlc_object_t *p_this )
 {
 filter_t *p_filter = (filter_t *)p_this;
-block_t *(*func)(filter_t *, block_t *) = NULL;
+const audio_format_t *infmt = p_filter-fmt_in.audio;
+const audio_format_t *outfmt = p_filter-fmt_out.audio;
 
-if( p_filter-fmt_in.audio.i_format != p_filter-fmt_out.audio.i_format
- || p_filter-fmt_in.audio.i_rate != p_filter-fmt_out.audio.i_rate
- || p_filter-fmt_in.audio.i_format != VLC_CODEC_FL32 )
+if( infmt-i_format != outfmt-i_format
+ || infmt-i_rate != outfmt-i_rate
+ || infmt-i_format != VLC_CODEC_FL32 )
 return VLC_EGENERIC;
-if( p_filter-fmt_in.audio.i_physical_channels
-   == p_filter-fmt_out.audio.i_physical_channels
-  p_filter-fmt_in.audio.i_original_channels
-   == p_filter-fmt_out.audio.i_original_channels )
+if( infmt-i_physical_channels == outfmt-i_physical_channels
+  infmt-i_original_channels == outfmt-i_original_channels )
 return VLC_EGENERIC;
 
-const bool b_reverse_stereo = p_filter-fmt_out.audio.i_original_channels 
 AOUT_CHAN_REVERSESTEREO;
-bool b_dualmono2stereo = (p_filter-fmt_in.audio.i_original_channels  
AOUT_CHAN_DUALMONO );
-b_dualmono2stereo = (p_filter-fmt_out.audio.i_physical_channels  ( 
AOUT_CHAN_LEFT | AOUT_CHAN_RIGHT ));
-b_dualmono2stereo = ((p_filter-fmt_out.audio.i_physical_channels  
AOUT_CHAN_PHYSMASK) != (p_filter-fmt_in.audio.i_physical_channels  
AOUT_CHAN_PHYSMASK));
-
-if( likely( !b_reverse_stereo  ! b_dualmono2stereo ) )
+if( outfmt-i_physical_channels == AOUT_CHANS_STEREO )
 {
-if( aout_FormatNbChannels( p_filter-fmt_out.audio )
- aout_FormatNbChannels( p_filter-fmt_in.audio ) )
-func = Upmix;
-else
-func = Downmix;
+bool swap = (outfmt-i_original_channels  AOUT_CHAN_REVERSESTEREO)
+  != (infmt-i_original_channels  AOUT_CHAN_REVERSESTEREO);
+
+if( (outfmt-i_original_channels  AOUT_CHAN_PHYSMASK)
+== AOUT_CHAN_LEFT )
+{
+p_filter-pf_audio_filter = swap ? CopyRight : CopyLeft;
+return VLC_SUCCESS;
+}
+
+if( (outfmt-i_original_channels  AOUT_CHAN_PHYSMASK)
+   == AOUT_CHAN_RIGHT )
+{
+p_filter-pf_audio_filter = swap ? CopyLeft : CopyRight;
+return VLC_SUCCESS;
+}
+
+if( swap )
+{
+p_filter-pf_audio_filter = ReverseStereo;
+return VLC_SUCCESS;
+}
 }
-/* Special case from dual mono to stereo */
-else if( b_dualmono2stereo )
+
+if ( aout_FormatNbChannels( outfmt ) == 1 )
 {
-bool right = !(p_filter-fmt_out.audio.i_original_channels  
AOUT_CHAN_LEFT);
-if( p_filter-fmt_out.audio.i_physical_channels == AOUT_CHAN_CENTER )
-/* Mono mode */
-func = right ? ExtractRight : ExtractLeft;
-else
-/* Fake-stereo mode */
-func = right ? CopyRight : CopyLeft;
+bool mono = !!(infmt-i_original_channels  AOUT_CHAN_DUALMONO);
+
+if( mono  (infmt-i_original_channels  AOUT_CHAN_LEFT) )
+{
+p_filter-pf_audio_filter = ExtractLeft;
+return VLC_SUCCESS;
+}
+
+if( mono  (infmt-i_original_channels  AOUT_CHAN_RIGHT) )
+{
+p_filter-pf_audio_filter = ExtractRight;
+return VLC_SUCCESS;
+}
 }
-else /* b_reverse_stereo */
-func = ReverseStereo;
 
-p_filter-pf_audio_filter = func;
+if( aout_FormatNbChannels( outfmt )  aout_FormatNbChannels( infmt ) )
+p_filter-pf_audio_filter = Upmix;
+else
+p_filter-pf_audio_filter = Downmix;
+
 return VLC_SUCCESS;
 }

___
vlc-commits mailing list
vlc-commits@videolan.org
https://mailman.videolan.org/listinfo/vlc-commits


[vlc-commits] PulseAudio: clobber original channels (refs #12673)

2014-11-02 Thread Rémi Denis-Courmont
vlc/vlc-2.2 | branch: master | Rémi Denis-Courmont r...@remlab.net | Sun Nov  
2 11:35:16 2014 +0200| [5a53ff0de2eeaab69980975ec8a4c6e6b78f190a] | committer: 
Rémi Denis-Courmont

PulseAudio: clobber original channels (refs #12673)

Do like the other outputs do.

(cherry picked from commit a842bc4778ea330326af8abf6de5659c78e30cb7)

 http://git.videolan.org/gitweb.cgi/vlc/vlc-2.2.git/?a=commit;h=5a53ff0de2eeaab69980975ec8a4c6e6b78f190a
---

 modules/audio_output/pulse.c |1 +
 1 file changed, 1 insertion(+)

diff --git a/modules/audio_output/pulse.c b/modules/audio_output/pulse.c
index a2da4d7..069cf6a 100644
--- a/modules/audio_output/pulse.c
+++ b/modules/audio_output/pulse.c
@@ -759,6 +759,7 @@ static int Start(audio_output_t *aout, 
audio_sample_format_t *restrict fmt)
 }
 if (fmt-i_physical_channels  AOUT_CHAN_LFE)
 map.map[map.channels++] = PA_CHANNEL_POSITION_LFE;
+fmt-i_original_channels = fmt-i_physical_channels;
 
 for (unsigned i = 0; map.channels  ss.channels; i++) {
 map.map[map.channels++] = PA_CHANNEL_POSITION_AUX0 + i;

___
vlc-commits mailing list
vlc-commits@videolan.org
https://mailman.videolan.org/listinfo/vlc-commits


[vlc-commits] codec: avcodec: simplify clock set condition

2014-11-02 Thread Francois Cartegnie
vlc | branch: master | Francois Cartegnie fcvlc...@free.fr | Sun Nov  2 
14:18:00 2014 +0100| [7307480b7a9b72d0f19a155216c608121a174a98] | committer: 
Francois Cartegnie

codec: avcodec: simplify clock set condition

date is always = VLC_TS_INVALID

 http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=7307480b7a9b72d0f19a155216c608121a174a98
---

 modules/codec/avcodec/audio.c |3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/modules/codec/avcodec/audio.c b/modules/codec/avcodec/audio.c
index 0812b36..a37f1cf 100644
--- a/modules/codec/avcodec/audio.c
+++ b/modules/codec/avcodec/audio.c
@@ -380,8 +380,7 @@ static block_t *DecodeAudio( decoder_t *p_dec, block_t 
**pp_block )
 if( p_dec-fmt_out.audio.i_rate != (unsigned int)ctx-sample_rate )
 date_Init( p_sys-end_date, ctx-sample_rate, 1 );
 
-if( p_block-i_pts  VLC_TS_INVALID 
-p_block-i_pts  date_Get( p_sys-end_date ) )
+if( p_block-i_pts  date_Get( p_sys-end_date ) )
 {
 date_Set( p_sys-end_date, p_block-i_pts );
 }

___
vlc-commits mailing list
vlc-commits@videolan.org
https://mailman.videolan.org/listinfo/vlc-commits


[vlc-commits] demux: avi: set PCR on seek

2014-11-02 Thread Francois Cartegnie
vlc | branch: master | Francois Cartegnie fcvlc...@free.fr | Sun Nov  2 
15:12:22 2014 +0100| [3d95e735d7135abcd7c031a87f6b43ecff0ea3bd] | committer: 
Francois Cartegnie

demux: avi: set PCR on seek

 http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=3d95e735d7135abcd7c031a87f6b43ecff0ea3bd
---

 modules/demux/avi/avi.c |3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/modules/demux/avi/avi.c b/modules/demux/avi/avi.c
index 2d16936..53f3590 100644
--- a/modules/demux/avi/avi.c
+++ b/modules/demux/avi/avi.c
@@ -1533,8 +1533,9 @@ static int Seek( demux_t *p_demux, mtime_t i_date, int 
i_percent )
 
 p_stream-b_eof = AVI_TrackSeek( p_demux, i_stream, i_date ) != 0;
 }
-es_out_Control( p_demux-out, ES_OUT_SET_NEXT_DISPLAY_TIME, i_date );
 p_sys-i_time = i_date;
+es_out_Control( p_demux-out, ES_OUT_SET_PCR, VLC_TS_0 + p_sys-i_time 
);
+es_out_Control( p_demux-out, ES_OUT_SET_NEXT_DISPLAY_TIME, VLC_TS_0 + 
p_sys-i_time );
 msg_Dbg( p_demux, seek: %PRId64 seconds, p_sys-i_time /CLOCK_FREQ 
);
 return VLC_SUCCESS;
 

___
vlc-commits mailing list
vlc-commits@videolan.org
https://mailman.videolan.org/listinfo/vlc-commits


[vlc-commits] httpcookies: fix heap read overflow (fixes #12674)

2014-11-02 Thread Rémi Denis-Courmont
vlc | branch: master | Rémi Denis-Courmont r...@remlab.net | Sun Nov  2 
17:06:40 2014 +0200| [24b37f4859f716c86ad2649837b32184818a5da0] | committer: 
Rémi Denis-Courmont

httpcookies: fix heap read overflow (fixes #12674)

Cc: Antti Ajanki antti.aja...@iki.fi

 http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=24b37f4859f716c86ad2649837b32184818a5da0
---

 src/misc/httpcookies.c |   14 ++
 1 file changed, 10 insertions(+), 4 deletions(-)

diff --git a/src/misc/httpcookies.c b/src/misc/httpcookies.c
index 4536880..7bd9850 100644
--- a/src/misc/httpcookies.c
+++ b/src/misc/httpcookies.c
@@ -332,10 +332,16 @@ static bool cookie_domain_matches( const http_cookie_t * 
cookie, const char *hos
 
 size_t host_len = strlen(host);
 size_t cookie_domain_len = strlen(cookie-psz_domain);
-int i = host_len - cookie_domain_len;
-bool is_suffix = ( i  0 ) 
-vlc_ascii_strcasecmp( host[i], cookie-psz_domain ) == 0;
-bool has_dot_before_suffix = host[i-1] == '.';
+bool is_suffix = false, has_dot_before_suffix = false;
+
+if( host_len  cookie_domain_len )
+{
+size_t i = host_len - cookie_domain_len;
+
+is_suffix = vlc_ascii_strcasecmp( host[i], cookie-psz_domain ) == 0;
+has_dot_before_suffix = host[i-1] == '.';
+}
+
 bool host_is_ipv4 = strspn(host, 0123456789.) == host_len;
 bool host_is_ipv6 = strchr(host, ':') != NULL;
 return is_suffix  has_dot_before_suffix 

___
vlc-commits mailing list
vlc-commits@videolan.org
https://mailman.videolan.org/listinfo/vlc-commits


[vlc-commits] access: bd: add assertion

2014-11-02 Thread Tristan Matthews
vlc | branch: master | Tristan Matthews tma...@videolan.org | Sun Nov  2 
18:08:15 2014 -0500| [ac7ec2d22c41ee2f614c22a818d0c658f6e1caaa] | committer: 
Tristan Matthews

access: bd: add assertion

 http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=ac7ec2d22c41ee2f614c22a818d0c658f6e1caaa
---

 modules/access/bd/bd.c |1 +
 1 file changed, 1 insertion(+)

diff --git a/modules/access/bd/bd.c b/modules/access/bd/bd.c
index bf9ccd5..3b17f55 100644
--- a/modules/access/bd/bd.c
+++ b/modules/access/bd/bd.c
@@ -610,6 +610,7 @@ static int SetPlayItem( demux_t *p_demux, int i_mpls, int 
i_play_item )
 if( p_sys-pp_clpi[i_clpi]-i_id == p_mpls_clpi-i_id )
 p_clpi = p_sys-pp_clpi[i_clpi];
 }
+assert(p_clpi);
 
 const bool b_same_clpi = b_same_mpls  p_sys-p_clpi-i_id == 
p_clpi-i_id;
 stream_t *p_m2ts = NULL;

___
vlc-commits mailing list
vlc-commits@videolan.org
https://mailman.videolan.org/listinfo/vlc-commits


[vlc-commits] demux: ogg: avoid use-after-free

2014-11-02 Thread Tristan Matthews
vlc | branch: master | Tristan Matthews tma...@videolan.org | Sun Nov  2 
17:51:30 2014 -0500| [ba65ae57333c6252b9288cfa8e10a52d4082e51c] | committer: 
Tristan Matthews

demux: ogg: avoid use-after-free

 http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=ba65ae57333c6252b9288cfa8e10a52d4082e51c
---

 modules/demux/ogg.c |1 +
 1 file changed, 1 insertion(+)

diff --git a/modules/demux/ogg.c b/modules/demux/ogg.c
index 260ea48..61102ec 100644
--- a/modules/demux/ogg.c
+++ b/modules/demux/ogg.c
@@ -1612,6 +1612,7 @@ static int Ogg_FindLogicalStreams( demux_t *p_demux )
 {
 msg_Dbg( p_demux, found invalid Daala header );
 Ogg_LogicalStreamDelete( p_demux, p_stream );
+p_stream = NULL;
 p_ogg-i_streams--;
 }
 }

___
vlc-commits mailing list
vlc-commits@videolan.org
https://mailman.videolan.org/listinfo/vlc-commits