[FFmpeg-devel] [PATCH] CrystalHD decoder support v3
Philip Langdale
philipl
Tue Feb 1 06:35:50 CET 2011
On Mon, 31 Jan 2011 23:17:31 +0100
Diego Biurrun <diego at biurrun.de> wrote:
> On Sun, Jan 30, 2011 at 06:53:08PM -0800, Philip Langdale wrote:
> >
> > --- a/configure
> > +++ b/configure
> > @@ -1212,6 +1213,13 @@ binkaudio_dct_decoder_select="mdct rdft dct"
> > binkaudio_rdft_decoder_select="mdct rdft"
> > cavs_decoder_select="golomb"
> > cook_decoder_select="mdct"
> > +h264_crystalhd_decoder_select="crystalhd"
> > +mpeg1_crystalhd_decoder_select="crystalhd"
> > +mpeg2_crystalhd_decoder_select="crystalhd"
> > +mpeg4_crystalhd_decoder_select="crystalhd"
> > +msmpeg4_crystalhd_decoder_select="crystalhd"
> > +vc1_crystalhd_decoder_select="crystalhd"
> > +wmv3_crystalhd_decoder_select="crystalhd"
> > cscd_decoder_suggest="zlib"
> > dca_decoder_select="mdct"
> > dnxhd_encoder_select="aandct"
>
> alphabetical order
>
> > --- a/libavcodec/allcodecs.c
> > +++ b/libavcodec/allcodecs.c
> > @@ -86,6 +86,13 @@ void avcodec_register_all(void)
> > REGISTER_DECODER (CDGRAPHICS, cdgraphics);
> > REGISTER_DECODER (CINEPAK, cinepak);
> > REGISTER_DECODER (CLJR, cljr);
> > + REGISTER_DECODER (H264_CRYSTALHD, h264_crystalhd);
> > + REGISTER_DECODER (MPEG1_CRYSTALHD, mpeg1_crystalhd);
> > + REGISTER_DECODER (MPEG2_CRYSTALHD, mpeg2_crystalhd);
> > + REGISTER_DECODER (MPEG4_CRYSTALHD, mpeg4_crystalhd);
> > + REGISTER_DECODER (MSMPEG4_CRYSTALHD, msmpeg4_crystalhd);
> > + REGISTER_DECODER (VC1_CRYSTALHD, vc1_crystalhd);
> > + REGISTER_DECODER (WMV3_CRYSTALHD, wmv3_crystalhd);
> > REGISTER_DECODER (CSCD, cscd);
> > REGISTER_DECODER (CYUV, cyuv);
>
> alphabetical order
Will move these.
> > --- /dev/null
> > +++ b/libavcodec/crystalhd.c
> > @@ -0,0 +1,903 @@
> > +
> > +typedef enum CopyRet CopyRet;
> > +
> > +typedef struct OpaqueList OpaqueList;
>
> I hate such typedefs - IMO just use the struct...
>
> > +static inline int extract_sps_pps_from_avcc(CHDContext *priv,
> > + uint8_t *data,
> > + uint32_t data_size)
> > +{
> > + int profile;
> > + unsigned int nal_size;
> > + unsigned int num_sps, num_pps;
> > +
> > + if (*data == 1) {
> > + priv->is_nal = 1;
> > + priv->nal_length_size = (data[4] & 0x03) + 1;
> > + } else {
> > + priv->is_nal = 0;
> > + priv->nal_length_size = 4;
> > + return 0;
>
> nit: align the =, same in other places
In the case of these formatting items, can I assume that vp8.c is a
valid example?
> > +static inline void *memcpy_pic(void *dst, const void *src,
> > + int bytesPerLine, int height,
> > + int dstStride, int srcStride)
> > +{
> > + int i;
> > + void *retval = dst;
> > +
> > + for(i = 0; i < height; i++) {
>
> for (
Will fix.
> > +static av_cold int init(AVCodecContext *avctx)
> > +{
> > + CHDContext* priv;
> > + BC_INPUT_FORMAT format;
> > + BC_STATUS ret;
> > +
> > + memset(&format, 0, sizeof(BC_INPUT_FORMAT));
> > + format.FGTEnable = FALSE;
> > + format.Progressive = TRUE;
> > + format.OptFlags = 0x80000000 | vdecFrameRate59_94 | 0x40;
> > + format.width = avctx->width;
> > + format.height = avctx->height;
>
> BC_INPUT_FORMAT format = { 0 };
>
> instead of the memset seems nicer.
Good point. Will do.
Thanks,
--phil
More information about the ffmpeg-devel
mailing list