~medibuntu-maintainers/mplayer/medibuntu.precise

« back to all changes in this revision

Viewing changes to ffmpeg/libavcodec/libopenjpeg.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:
27
27
#include "libavutil/imgutils.h"
28
28
#include "avcodec.h"
29
29
#include "libavutil/intreadwrite.h"
 
30
#include "thread.h"
30
31
#define  OPJ_STATIC
31
32
#include <openjpeg.h>
32
33
 
57
58
    return 0;
58
59
}
59
60
 
 
61
static av_cold int libopenjpeg_decode_init_thread_copy(AVCodecContext *avctx)
 
62
{
 
63
    LibOpenJPEGContext *ctx = avctx->priv_data;
 
64
 
 
65
    avctx->coded_frame = &ctx->image;
 
66
    return 0;
 
67
}
 
68
 
60
69
static int libopenjpeg_decode_frame(AVCodecContext *avctx,
61
70
                                    void *data, int *data_size,
62
71
                                    AVPacket *avpkt)
63
72
{
64
 
    const uint8_t *buf = avpkt->data;
 
73
    uint8_t *buf = avpkt->data;
65
74
    int buf_size = avpkt->size;
66
75
    LibOpenJPEGContext *ctx = avctx->priv_data;
67
76
    AVFrame *picture = &ctx->image, *output = data;
94
103
    }
95
104
    opj_set_event_mgr((opj_common_ptr)dec, NULL, NULL);
96
105
 
97
 
    ctx->dec_params.cp_reduce = avctx->lowres;
 
106
    ctx->dec_params.cp_limit_decoding = LIMIT_TO_MAIN_HEADER;
98
107
    // Tie decoder with decoding parameters
99
108
    opj_setup_decoder(dec, &ctx->dec_params);
100
109
    stream = opj_cio_open((opj_common_ptr)dec, buf, buf_size);
104
113
        return -1;
105
114
    }
106
115
 
107
 
    // Decode the codestream
 
116
    // Decode the header only
108
117
    image = opj_decode_with_info(dec, stream, NULL);
109
118
    opj_cio_close(stream);
110
119
    if(!image) {
112
121
        opj_destroy_decompress(dec);
113
122
        return -1;
114
123
    }
115
 
    width  = image->comps[0].w << avctx->lowres;
116
 
    height = image->comps[0].h << avctx->lowres;
 
124
    width  = image->x1 - image->x0;
 
125
    height = image->y1 - image->y0;
117
126
    if(av_image_check_size(width, height, 0, avctx) < 0) {
118
127
        av_log(avctx, AV_LOG_ERROR, "%dx%d dimension invalid.\n", width, height);
119
128
        goto done;
139
148
    }
140
149
 
141
150
    if(picture->data[0])
142
 
        avctx->release_buffer(avctx, picture);
143
 
 
144
 
    if(avctx->get_buffer(avctx, picture) < 0) {
145
 
        av_log(avctx, AV_LOG_ERROR, "Couldn't allocate image buffer.\n");
146
 
        return -1;
147
 
    }
 
151
        ff_thread_release_buffer(avctx, picture);
 
152
 
 
153
    if(ff_thread_get_buffer(avctx, picture) < 0){
 
154
        av_log(avctx, AV_LOG_ERROR, "ff_thread_get_buffer() failed\n");
 
155
        return -1;
 
156
    }
 
157
 
 
158
    ff_thread_finish_setup(avctx);
 
159
 
 
160
    ctx->dec_params.cp_limit_decoding = NO_LIMITATION;
 
161
    ctx->dec_params.cp_reduce = avctx->lowres;
 
162
    // Tie decoder with decoding parameters
 
163
    opj_setup_decoder(dec, &ctx->dec_params);
 
164
    stream = opj_cio_open((opj_common_ptr)dec, buf, buf_size);
 
165
    if(!stream) {
 
166
        av_log(avctx, AV_LOG_ERROR, "Codestream could not be opened for reading.\n");
 
167
        opj_destroy_decompress(dec);
 
168
        return -1;
 
169
    }
 
170
 
 
171
    // Decode the codestream
 
172
    image = opj_decode_with_info(dec, stream, NULL);
 
173
    opj_cio_close(stream);
148
174
 
149
175
    for(x = 0; x < image->numcomps; x++) {
150
176
        adjust[x] = FFMAX(image->comps[x].prec - 8, 0);
179
205
    LibOpenJPEGContext *ctx = avctx->priv_data;
180
206
 
181
207
    if(ctx->image.data[0])
182
 
        avctx->release_buffer(avctx, &ctx->image);
 
208
        ff_thread_release_buffer(avctx, &ctx->image);
183
209
    return 0 ;
184
210
}
185
211
 
186
212
 
187
213
AVCodec ff_libopenjpeg_decoder = {
188
 
    "libopenjpeg",
189
 
    AVMEDIA_TYPE_VIDEO,
190
 
    CODEC_ID_JPEG2000,
191
 
    sizeof(LibOpenJPEGContext),
192
 
    libopenjpeg_decode_init,
193
 
    NULL,
194
 
    libopenjpeg_decode_close,
195
 
    libopenjpeg_decode_frame,
196
 
    CODEC_CAP_DR1,
197
 
    .max_lowres = 5,
198
 
    .long_name = NULL_IF_CONFIG_SMALL("OpenJPEG based JPEG 2000 decoder"),
199
 
} ;
 
214
    .name           = "libopenjpeg",
 
215
    .type           = AVMEDIA_TYPE_VIDEO,
 
216
    .id             = CODEC_ID_JPEG2000,
 
217
    .priv_data_size = sizeof(LibOpenJPEGContext),
 
218
    .init           = libopenjpeg_decode_init,
 
219
    .close          = libopenjpeg_decode_close,
 
220
    .decode         = libopenjpeg_decode_frame,
 
221
    .capabilities   = CODEC_CAP_DR1 | CODEC_CAP_FRAME_THREADS,
 
222
    .max_lowres     = 5,
 
223
    .long_name      = NULL_IF_CONFIG_SMALL("OpenJPEG based JPEG 2000 decoder"),
 
224
    .init_thread_copy = ONLY_IF_THREADS_ENABLED(libopenjpeg_decode_init_thread_copy)
 
225
};