~medibuntu-maintainers/mplayer/medibuntu.precise

« back to all changes in this revision

Viewing changes to ffmpeg/libavformat/dv.c

  • Committer: Gauvain Pocentek
  • Date: 2012-03-06 11:59:12 UTC
  • mfrom: (66.1.15 precise)
  • Revision ID: gauvain@pocentek.net-20120306115912-h9d6kt9j0l532oo5
* Merge from Ubuntu:
  - put back faac support
  - recommends apport-hooks-medibuntu
  - change Maintainer, Uploaders & Vcs-* fields.
* New upstream snapshot
* upload to unstable
* Build against external libmpeg2
* drop 51_FTBFS_arm.patch again
* no longer build depend on libcdparanoia-dev on the Hurd
* Fix FTBFS on the hurd.
  Thanks to Samuel Thibault <sthibault@debian.org> (Closes: #654974)
* Fix FTBFS on arm
* New upstream snapshot, Closes: #650339, #643621, #481807
* Imported Upstream version 1.0~rc4+svn34492
* Bump standards version
* Bump dependency on libav >= 4:0.8~, Closes: #653887
* Fix build-indep
* Build mplayer-gui again, Closes: #568514
* Drop debian/all-lang-config-mak.sh, no longer needed
* include .dfsg1 in version number
* remove get-orig-source target
* no longer prune compiler flags from the environment
* No longer advertise nor build 3fdx, mga and dxr3 backends,
  Closes: #496106, #442181, #533546
* beautify mplayer version identification string
* Brown paperbag upload.
* Next try to fix build failure on sparce after recent binutils change.
* Brown paperbag upload.
* Really fix build failure on sparc after recent binutils change.
* Properly set Replaces/Conflicts on mplayer2{,-dbg} to avoid
  file overwrite errors.
* Adjust versioning of mplayer listed in the mplayer-dbg's Depends field.
* Fix build failure on sparc after recent binutils change.
* Urgency medium bumped because of RC-level bugfix
  and speeding up x264 transition.
* Update to my @debian.org email.
* Upload to unstable
* Enable joystick support on Linux only, Closes: #638408
* Rebuild fixes toolchain issue on arm, Closes: #637077
* New upstream snapshot
* following the discussion started by Diego Biurrun <diego@biurrun.de>
  in debian-devel, I have prepared a new packaging of 'mplayer'
  (with code that comes from CVS)
* the upstream tar.bz cannot be distributed by Debian, since it contains
   CSS code; so I am repackaging it 
* I have tried my best to address all known issues:
  - the package contains the detailed Copyright made by Diego Biurrun 
  - the package does not contain CSS code, or  AFAIK other code on which 
     there is active patent enforcement
  - there is a script  debian/cvs-changelog.sh  that shows all changes
     done to files included in this source.
    This should comply with GPLv2 sec 2.a  (in spirit if not in letter)
    For this reason, the source code contains CVS directories.
* needs   make (>= 3.80) for 'html-chunked-$(1)' in DOCS/xml/Makefile

* some corrections, as suggested Diego Biurrun
  - binary codecs should go into /usr/lib/codecs (upstream default)
  - better template 'mplayer/install_codecs'
  - an empty 'font=' in mplayer.conf breaks mplayer: postinst corrected
* correction in 'mplayer/cfgnote'
* better mplayer.postinst and mplayer.config

* New upstream release
* better debian/copyright file
* do not ship a skin
* New upstream release
* changed DEB_BUILD_OPTIONS to DEB_BUILD_CONFIGURE ,
  DEB_BUILD_OPTIONS is used as in debian policy
* use gcc-3.4
* changed xlibs-dev to a long list of dependencies, for Debian/etch
* try to adhere to  http://www.mplayerhq.hu/DOCS/tech/binary-packaging.txt
  (see README.Debian for details)
* removed dependency on xlibmesa-dev, disabled opengl
* New upstream release
* Simon McVittie <hacks@pseudorandom.co.uk> wonderful work:
- Work around Debian bug #267442 (glibc's sys/uio.h and gcc's altivec.h have
  conflicting uses for __vector) by re-ordering #includes
- Fix potential symlink attack in ./configure
- Disable support for binary codecs on platforms for which those codecs
  aren't available; also disable the corresponding Debconf note when it's
  inappropriate
- Changed Build-Depends: so it works in pbuilder
- Explicitly build-depend on libjpeg62-dev, libfontconfig1-dev,
  libungif4-dev 
- Tweak debian/rules to avoid certain errors being ignored
- Use --language=all
* provide a target  'debian/rules get-orig-source' 
  that recreates the orig.tar.gz ; then use the above orig.tar.gz
* rewrote some parts of debian/rules
* don't clean and recompile docs if upstream ships them
* mplayer-doc was shipping too much stuff
* translated man pages where not installed properly
* compile with libdv4-dev
* correct README.Debian
* Forgot build-dep on libtheora
* Must not depend on libxvidcore
* New upstream release
* new release.
* rc1 to become 0.90
* new pre-release
* new pre-release
* gtk bug fixed.
* new release.
* version bumped
* 0.60 pre2 release
* 0.60 pre-release.

Show diffs side-by-side

added added

removed removed

Lines of Context:
30
30
 */
31
31
#include <time.h>
32
32
#include "avformat.h"
 
33
#include "internal.h"
33
34
#include "libavcodec/dvdata.h"
34
35
#include "libavutil/intreadwrite.h"
 
36
#include "libavutil/mathematics.h"
35
37
#include "dv.h"
36
38
 
37
39
struct DVDemuxContext {
95
97
/*
96
98
 * There's a couple of assumptions being made here:
97
99
 * 1. By default we silence erroneous (0x8000/16bit 0x800/12bit) audio samples.
98
 
 *    We can pass them upwards when ffmpeg will be ready to deal with them.
 
100
 *    We can pass them upwards when libavcodec will be ready to deal with them.
99
101
 * 2. We don't do software emphasis.
100
102
 * 3. Audio is always returned as 16bit linear samples: 12bit nonlinear samples
101
103
 *    are converted into 16bit linear ones.
210
212
    /* Dynamic handling of the audio streams in DV */
211
213
    for (i = 0; i < ach; i++) {
212
214
       if (!c->ast[i]) {
213
 
           c->ast[i] = av_new_stream(c->fctx, 0);
 
215
           c->ast[i] = avformat_new_stream(c->fctx, NULL);
214
216
           if (!c->ast[i])
215
217
               break;
216
 
           av_set_pts_info(c->ast[i], 64, 1, 30000);
 
218
           avpriv_set_pts_info(c->ast[i], 64, 1, 30000);
217
219
           c->ast[i]->codec->codec_type = AVMEDIA_TYPE_AUDIO;
218
220
           c->ast[i]->codec->codec_id   = CODEC_ID_PCM_S16LE;
219
221
 
243
245
    if (c->sys) {
244
246
        avctx = c->vst->codec;
245
247
 
246
 
        av_set_pts_info(c->vst, 64, c->sys->time_base.num,
 
248
        avpriv_set_pts_info(c->vst, 64, c->sys->time_base.num,
247
249
                        c->sys->time_base.den);
248
250
        avctx->time_base= c->sys->time_base;
249
251
        if (!avctx->width){
269
271
 * The following 3 functions constitute our interface to the world
270
272
 */
271
273
 
272
 
DVDemuxContext* dv_init_demux(AVFormatContext *s)
 
274
DVDemuxContext* avpriv_dv_init_demux(AVFormatContext *s)
273
275
{
274
276
    DVDemuxContext *c;
275
277
 
277
279
    if (!c)
278
280
        return NULL;
279
281
 
280
 
    c->vst = av_new_stream(s, 0);
 
282
    c->vst = avformat_new_stream(s, NULL);
281
283
    if (!c->vst) {
282
284
        av_free(c);
283
285
        return NULL;
298
300
    return c;
299
301
}
300
302
 
301
 
int dv_get_packet(DVDemuxContext *c, AVPacket *pkt)
 
303
int avpriv_dv_get_packet(DVDemuxContext *c, AVPacket *pkt)
302
304
{
303
305
    int size = -1;
304
306
    int i;
315
317
    return size;
316
318
}
317
319
 
318
 
int dv_produce_packet(DVDemuxContext *c, AVPacket *pkt,
 
320
int avpriv_dv_produce_packet(DVDemuxContext *c, AVPacket *pkt,
319
321
                      uint8_t* buf, int buf_size)
320
322
{
321
323
    int size, i;
322
324
    uint8_t *ppcm[4] = {0};
323
325
 
324
326
    if (buf_size < DV_PROFILE_BYTES ||
325
 
        !(c->sys = ff_dv_frame_profile(c->sys, buf, buf_size)) ||
 
327
        !(c->sys = avpriv_dv_frame_profile(c->sys, buf, buf_size)) ||
326
328
        buf_size < c->sys->frame_size) {
327
329
          return -1;   /* Broken frame, or not enough data */
328
330
    }
368
370
                              int64_t timestamp, int flags)
369
371
{
370
372
    // FIXME: sys may be wrong if last dv_read_packet() failed (buffer is junk)
371
 
    const DVprofile* sys = ff_dv_codec_profile(c->vst->codec);
 
373
    const DVprofile* sys = avpriv_dv_codec_profile(c->vst->codec);
372
374
    int64_t offset;
373
375
    int64_t size = avio_size(s->pb) - s->data_offset;
374
376
    int64_t max_offset = ((size-1) / sys->frame_size) * sys->frame_size;
406
408
    unsigned state, marker_pos = 0;
407
409
    RawDVContext *c = s->priv_data;
408
410
 
409
 
    c->dv_demux = dv_init_demux(s);
 
411
    c->dv_demux = avpriv_dv_init_demux(s);
410
412
    if (!c->dv_demux)
411
413
        return -1;
412
414
 
431
433
        avio_seek(s->pb, -DV_PROFILE_BYTES, SEEK_CUR) < 0)
432
434
        return AVERROR(EIO);
433
435
 
434
 
    c->dv_demux->sys = ff_dv_frame_profile(c->dv_demux->sys, c->buf, DV_PROFILE_BYTES);
 
436
    c->dv_demux->sys = avpriv_dv_frame_profile(c->dv_demux->sys, c->buf, DV_PROFILE_BYTES);
435
437
    if (!c->dv_demux->sys) {
436
438
        av_log(s, AV_LOG_ERROR, "Can't determine profile of DV input stream.\n");
437
439
        return -1;
449
451
    int size;
450
452
    RawDVContext *c = s->priv_data;
451
453
 
452
 
    size = dv_get_packet(c->dv_demux, pkt);
 
454
    size = avpriv_dv_get_packet(c->dv_demux, pkt);
453
455
 
454
456
    if (size < 0) {
455
457
        if (!c->dv_demux->sys)
458
460
        if (avio_read(s->pb, c->buf, size) <= 0)
459
461
            return AVERROR(EIO);
460
462
 
461
 
        size = dv_produce_packet(c->dv_demux, pkt, c->buf, size);
 
463
        size = avpriv_dv_produce_packet(c->dv_demux, pkt, c->buf, size);
462
464
    }
463
465
 
464
466
    return size;
519
521
 
520
522
#if CONFIG_DV_DEMUXER
521
523
AVInputFormat ff_dv_demuxer = {
522
 
    "dv",
523
 
    NULL_IF_CONFIG_SMALL("DV video format"),
524
 
    sizeof(RawDVContext),
525
 
    dv_probe,
526
 
    dv_read_header,
527
 
    dv_read_packet,
528
 
    dv_read_close,
529
 
    dv_read_seek,
 
524
    .name           = "dv",
 
525
    .long_name      = NULL_IF_CONFIG_SMALL("DV video format"),
 
526
    .priv_data_size = sizeof(RawDVContext),
 
527
    .read_probe     = dv_probe,
 
528
    .read_header    = dv_read_header,
 
529
    .read_packet    = dv_read_packet,
 
530
    .read_close     = dv_read_close,
 
531
    .read_seek      = dv_read_seek,
530
532
    .extensions = "dv,dif",
531
533
};
532
534
#endif