~ubuntu-branches/ubuntu/maverick/vlc/maverick

« back to all changes in this revision

Viewing changes to src/audio_output/output.c

  • Committer: Bazaar Package Importer
  • Author(s): Reinhard Tartler
  • Date: 2008-09-17 21:56:14 UTC
  • mfrom: (1.1.17 upstream)
  • Revision ID: james.westby@ubuntu.com-20080917215614-tj0vx8xzd57e52t8
Tags: 0.9.2-1ubuntu1
* New Upstream Release, exception granted by
    - dktrkranz, norsetto, Hobbsee (via irc). LP: #270404

Changes done in ubuntu:

* add libxul-dev to build-depends
* make sure that vlc is build against libxul in configure. This doesn't
  change anything in the package, but makes it more robust if building
  in an 'unclean' chroot or when modifying the package.
* debian/control: make Vcs-* fields point to the motumedia branch
* add libx264-dev and libass-dev to build-depends
  LP: #210354, #199870
* actually enable libass support by passing --enable-libass to configure
* enable libdca: add libdca-dev to build depends and --enable-libdca
* install the x264 plugin.

Changes already in the pkg-multimedia branch in debian:

* don't install usr/share/vlc/mozilla in debian/mozilla-plugin-vlc.install  
* new upstream .desktop file now registers flash video mimetype LP: #261567
* add Xb-Npp-Applications to mozilla-plugin-vlc
* remove duplicate entries in debian/vlc-nox.install

Show diffs side-by-side

added added

removed removed

Lines of Context:
2
2
 * output.c : internal management of output streams for the audio output
3
3
 *****************************************************************************
4
4
 * Copyright (C) 2002-2004 the VideoLAN team
5
 
 * $Id: 9d277619a948928f2275a294a83e53ceb626b0fa $
 
5
 * $Id$
6
6
 *
7
7
 * Authors: Christophe Massiot <massiot@via.ecp.fr>
8
8
 *
24
24
/*****************************************************************************
25
25
 * Preamble
26
26
 *****************************************************************************/
27
 
#include <stdlib.h>                            /* calloc(), malloc(), free() */
28
 
#include <string.h>
29
 
 
30
 
#include <vlc/vlc.h>
31
 
 
32
 
#include "audio_output.h"
 
27
#ifdef HAVE_CONFIG_H
 
28
# include "config.h"
 
29
#endif
 
30
 
 
31
#include <vlc_common.h>
 
32
#include <vlc_aout.h>
33
33
#include "aout_internal.h"
34
34
 
35
35
/*****************************************************************************
51
51
        p_aout->output.output.i_rate = i_rate;
52
52
    aout_FormatPrepare( &p_aout->output.output );
53
53
 
54
 
    vlc_mutex_lock( &p_aout->output_fifo_lock );
 
54
    aout_lock_output_fifo( p_aout );
55
55
 
56
56
    /* Find the best output plug-in. */
57
57
    p_aout->output.p_module = module_Need( p_aout, "audio output", "$aout", 0);
58
58
    if ( p_aout->output.p_module == NULL )
59
59
    {
60
60
        msg_Err( p_aout, "no suitable audio output module" );
61
 
        vlc_mutex_unlock( &p_aout->output_fifo_lock );
 
61
        aout_unlock_output_fifo( p_aout );
62
62
        return -1;
63
63
    }
64
64
 
156
156
        var_AddCallback( p_aout, "audio-channels", aout_ChannelsRestart,
157
157
                         NULL );
158
158
    }
159
 
    val.b_bool = VLC_TRUE;
 
159
    val.b_bool = true;
160
160
    var_Set( p_aout, "intf-change", val );
161
161
 
162
162
    aout_FormatPrepare( &p_aout->output.output );
165
165
    aout_FifoInit( p_aout, &p_aout->output.fifo,
166
166
                   p_aout->output.output.i_rate );
167
167
 
168
 
    vlc_mutex_unlock( &p_aout->output_fifo_lock );
 
168
    aout_unlock_output_fifo( p_aout );
169
169
 
170
170
    aout_FormatPrint( p_aout, "output", &p_aout->output.output );
171
171
 
176
176
    {
177
177
        /* Non-S/PDIF mixer only deals with float32 or fixed32. */
178
178
        p_aout->mixer.mixer.i_format
179
 
                     = (p_aout->p_libvlc->i_cpu & CPU_CAPABILITY_FPU) ?
 
179
                     = (vlc_CPU() & CPU_CAPABILITY_FPU) ?
180
180
                        VLC_FOURCC('f','l','3','2') :
181
181
                        VLC_FOURCC('f','i','3','2');
182
182
        aout_FormatPrepare( &p_aout->mixer.mixer );
231
231
 
232
232
    aout_FiltersDestroyPipeline( p_aout, p_aout->output.pp_filters,
233
233
                                 p_aout->output.i_nb_filters );
 
234
 
 
235
    aout_lock_output_fifo( p_aout );
234
236
    aout_FifoDestroy( p_aout, &p_aout->output.fifo );
 
237
    aout_unlock_output_fifo( p_aout );
235
238
 
236
 
    p_aout->output.b_error = VLC_TRUE;
 
239
    p_aout->output.b_error = true;
237
240
}
238
241
 
239
242
/*****************************************************************************
253
256
        return;
254
257
    }
255
258
 
256
 
    vlc_mutex_lock( &p_aout->output_fifo_lock );
 
259
    aout_lock_output_fifo( p_aout );
257
260
    aout_FifoPush( p_aout, &p_aout->output.fifo, p_buffer );
258
261
    p_aout->output.pf_play( p_aout );
259
 
    vlc_mutex_unlock( &p_aout->output_fifo_lock );
 
262
    aout_unlock_output_fifo( p_aout );
260
263
}
261
264
 
262
265
/*****************************************************************************
269
272
 *****************************************************************************/
270
273
aout_buffer_t * aout_OutputNextBuffer( aout_instance_t * p_aout,
271
274
                                       mtime_t start_date,
272
 
                                       vlc_bool_t b_can_sleek )
 
275
                                       bool b_can_sleek )
273
276
{
274
277
    aout_buffer_t * p_buffer;
275
278
 
276
 
    vlc_mutex_lock( &p_aout->output_fifo_lock );
 
279
    aout_lock_output_fifo( p_aout );
277
280
 
278
281
    p_buffer = p_aout->output.fifo.p_first;
279
282
 
283
286
    while ( p_buffer && p_buffer->start_date <
284
287
            (b_can_sleek ? start_date : mdate()) - AOUT_PTS_TOLERANCE )
285
288
    {
286
 
        msg_Dbg( p_aout, "audio output is too slow ("I64Fd"), "
287
 
                 "trashing "I64Fd"us", mdate() - p_buffer->start_date,
 
289
        msg_Dbg( p_aout, "audio output is too slow (%"PRId64"), "
 
290
                 "trashing %"PRId64"us", mdate() - p_buffer->start_date,
288
291
                 p_buffer->end_date - p_buffer->start_date );
289
292
        p_buffer = p_buffer->p_next;
290
293
        aout_BufferFree( p_aout->output.fifo.p_first );
307
310
        p_aout->output.b_starving = 1;
308
311
#endif
309
312
 
310
 
        vlc_mutex_unlock( &p_aout->output_fifo_lock );
 
313
        aout_unlock_output_fifo( p_aout );
311
314
        return NULL;
312
315
    }
313
316
 
324
327
     */
325
328
    {
326
329
        const mtime_t i_delta = p_buffer->start_date - start_date;
327
 
        vlc_mutex_unlock( &p_aout->output_fifo_lock );
 
330
        aout_unlock_output_fifo( p_aout );
328
331
 
329
332
        if ( !p_aout->output.b_starving )
330
 
            msg_Dbg( p_aout, "audio output is starving ("I64Fd"), "
 
333
            msg_Dbg( p_aout, "audio output is starving (%"PRId64"), "
331
334
                     "playing silence", i_delta );
332
335
        p_aout->output.b_starving = 1;
333
336
        return NULL;
343
346
        int i;
344
347
        mtime_t difference = start_date - p_buffer->start_date;
345
348
        msg_Warn( p_aout, "output date isn't PTS date, requesting "
346
 
                  "resampling ("I64Fd")", difference );
 
349
                  "resampling (%"PRId64")", difference );
347
350
 
348
 
        vlc_mutex_lock( &p_aout->input_fifos_lock );
 
351
        aout_lock_input_fifos( p_aout );
349
352
        for ( i = 0; i < p_aout->i_nb_inputs; i++ )
350
353
        {
351
354
            aout_fifo_t * p_fifo = &p_aout->pp_inputs[i]->fifo;
354
357
        }
355
358
 
356
359
        aout_FifoMoveDates( p_aout, &p_aout->output.fifo, difference );
357
 
        vlc_mutex_unlock( &p_aout->input_fifos_lock );
 
360
        aout_unlock_input_fifos( p_aout );
358
361
    }
359
362
 
360
363
    p_aout->output.fifo.p_first = p_buffer->p_next;
363
366
        p_aout->output.fifo.pp_last = &p_aout->output.fifo.p_first;
364
367
    }
365
368
 
366
 
    vlc_mutex_unlock( &p_aout->output_fifo_lock );
 
369
    aout_unlock_output_fifo( p_aout );
367
370
    return p_buffer;
368
371
}