[soc]: r2023 - in dcaenc: . checkout.sh dcaenc.c dcaenc.h ffmpeg.patch readme
Author: banan Date: Thu Mar 20 14:40:49 2008 New Revision: 2023 Log: dca encoder skeleton Added: dcaenc/ dcaenc/checkout.sh (contents, props changed) dcaenc/dcaenc.c dcaenc/dcaenc.h dcaenc/ffmpeg.patch dcaenc/readme Added: dcaenc/checkout.sh ============================================================================== --- (empty file) +++ dcaenc/checkout.sh Thu Mar 20 14:40:49 2008 @@ -0,0 +1,11 @@ +echo "checking out ffmpeg svn" +svn checkout svn://svn.mplayerhq.hu/ffmpeg/trunk/ ffmpeg -r 12510 +echo "Done, now just do a regular configure and make to build." +echo "patching ffmpeg" +cd ffmpeg +patch -p0 <../ffmpeg.patch +cd .. +echo "linkling the dca files to ffmpeg/libavcodec" +ln -s ../../dcaenc.c ffmpeg/libavcodec/dcaenc.c +ln -s ../../dcaenc.h ffmpeg/libavcodec/dcaenc.h +echo "all done recompile ffmpeg" Added: dcaenc/dcaenc.c ============================================================================== --- (empty file) +++ dcaenc/dcaenc.c Thu Mar 20 14:40:49 2008 @@ -0,0 +1,379 @@ +/* + * DCA encoder + * Copyright (C) 2008 Alexander E. Patrakov + * + * This file is part of FFmpeg. + * + * When this file is part of FFmpeg it can be licensed under the LGPL 2.1 + * currently it is a wip + */ + +/* FFmpeg port by Benjamin Larsson */ + + +#include "avcodec.h" +#include "bitstream.h" +#include "dcaenc.h" + +#define MAX_CHANNELS (2) +#define DCA_SUBBANDS_32 (32) +#define DCA_MAX_FRAME_SIZE (16383) +#define FIXED_FRAME_SIZE (7167) + +typedef struct { + PutBitContext pb; + int32_t history[MAX_CHANNELS][512]; /* This is a circular buffer */ + int start[MAX_CHANNELS]; + + int32_t pcm[DCA_SUBBANDS_32]; + int32_t subband[64][MAX_CHANNELS][DCA_SUBBANDS_32]; /* [sample][channel][subband] */ + int16_t st_samples[4096]; + int fill_samples; +} DCAContext; + +static int32_t cos_table[128]; + + +static inline int32_t mul32(int32_t a, int32_t b) +{ + /* on >=i686, gcc compiles this into a single "imull" instruction */ + int64_t r = (int64_t)a * b; + /* round the result before truncating - improves accuracy */ + return (r + 0x80000000) >> 32; +} + +/* Integer version of the cosine modulated Pseudo QMF */ + +void qmf_init(void) +{ + int i; + int32_t c[17], s[17]; + s[0] = 0; /* sin(index * PI / 64) * 0x7fffffff */ + c[0] = 0x7fffffff; /* cos(index * PI / 64) * 0x7fffffff */ + + for (i = 1; i <= 16; i++) { + s[i] = 2 * (mul32(c[i-1], 105372028) + mul32(s[i-1], 2144896908)); + c[i] = 2 * (mul32(c[i-1], 2144896908) - mul32(s[i-1], 105372028)); + } + + for (i = 0; i < 16; i++) { + cos_table[i] = c[i] >> 3; /* so that the output doesn't overflow */ + cos_table[i+16] = s[16-i] >> 3; + cos_table[i+32] = -s[i] >> 3; + cos_table[i+48] = -c[16-i] >> 3; + cos_table[i+64] = -c[i] >> 3; + cos_table[i+80] = -s[16-i] >> 3; + cos_table[i+96] = s[i] >> 3; + cos_table[i+112] = c[16-i] >> 3; + } +} + +static int32_t band_delta_factor(int band, int sample_num) +{ + int index = band * (2 * sample_num + 1); + if (band == 0) + return 0x07ffffff; + else + return cos_table[index & 127]; +} + +static void qmf_decompose(DCAContext *c, int32_t in[32], int32_t out[32], int channel) +{ + int band, i, j, k; + int32_t resp; + int32_t accum[DCA_SUBBANDS_32]; + + /* Place new samples into the history buffer */ + for (i = 0; i < DCA_SUBBANDS_32; i++) + c->history[channel][c->start[channel] + i] = in[i]; + c->start[channel] += DCA_SUBBANDS_32; + if (c->start[channel] == 512) + c->start[channel] = 0; + + /* Calculate the dot product of the signal with the (possibly inverted) + reference decoder's response to this vector: + (0.0, 0.0, ..., 0.0, -1.0, 1.0, 0.0, ..., 0.0) + so that -1.0 cancels 1.0 from the previous step */ + + memset(accum,0,sizeof(int32_t)); + + for (k = 48, j = 0, i = c->start[channel]; i < 512; k++, j++, i++) + accum[(k & 32) ? (31 - (k & 31)) : (k & 31)] += mul32(c->history[channel][i], UnQMF[j]); + for (i = 0; i < c->start[channel]; k++, j++, i++) + accum[(k & 32) ? (31 - (k & 31)) : (k & 31)] += mul32(c->history[channel][i], UnQMF[j]); + + resp = 0; + /* TODO: implement FFT instead of this naive calculation */ + for (band = 0; band < DCA_SUBBANDS_32; band++) { + for (j = 0; j < 32; j++) + resp += mul32(accum[j], band_delta_factor(band, j)); + + out[band] = (band & 2) ? (-resp) : resp; + } +} + +static void put_frame_header(DCAContext *c) +{ + /* SYNC */ + put_bits(&c->pb, 16, 0x7ffe); + put_bits(&c->pb, 16, 0x8001); + + /* Frame type: normal */ + put_bits(&c->pb, 1, 1); + + /* Deficit sample count: none */ + put_bits(&c->pb, 5, 31); + + /* CRC is not present */ + put_bits(&c->pb, 1, 0); + + /* Number of PCM sample blocks: 64 + (larger values are unusable with 1:1 compression due to high bitrate + and frame size limitation) */ + put_bits(&c->pb, 7, 63); + + /* Primary frame byte size: 7168 */ + put_bits(&c->pb, 14, FIXED_FRAME_SIZE); + + /* Audio channel arrangement: L + R (stereo) */ + put_bits(&c->pb, 6, 2); + + /* Core audio sampling frequency: 44100 Hz */ + put_bits(&c->pb, 4, 8); + + /* Transmission bit rate: 1411.2 kbps */ + put_bits(&c->pb, 5, 0x16); + + /* Embedded down mix: disabled */ + put_bits(&c->pb, 1, 0); + + /* Embedded dynamic range flag: not present */ + put_bits(&c->pb, 1, 0); + + /* Embedded time stamp flag: not present */ + put_bits(&c->pb, 1, 0); + + /* Auxiliary data flag: not present */ + put_bits(&c->pb, 1, 0); + + /* HDCD source: no */ + put_bits(&c->pb, 1, 0); + + /* Extension audio ID: N/A */ + put_bits(&c->pb, 3, 0); + + /* Extended audio data: not present */ + put_bits(&c->pb, 1, 0); + + /* Audio sync word insertion flag: after each sub-frame */ + put_bits(&c->pb, 1, 0); + + /* Low frequency effects flag: not present */ + put_bits(&c->pb, 2, 0); + + /* Predictor history switch flag: on */ + put_bits(&c->pb, 1, 1); + + /* No CRC */ + /* Multirate interpolator switch: non-perfect reconstruction */ + put_bits(&c->pb, 1, 0); + + /* Encoder software revision: 7 */ + put_bits(&c->pb, 4, 7); + + /* Copy history: 0 */ + put_bits(&c->pb, 2, 0); + + /* Source PCM resolution: 16 bits, not DTS ES */ + put_bits(&c->pb, 3, 0); + + /* Front sum/difference coding: no */ + put_bits(&c->pb, 1, 0); + + /* Surrounds sum/difference coding: no */ + put_bits(&c->pb, 1, 0); + + /* Dialog normalization: 0 dB */ + put_bits(&c->pb, 4, 0); +} + +static void put_primary_audio_header(DCAContext *c) +{ + /* Number of subframes: 2 */ + put_bits(&c->pb, 4, 1); + + /* Number of primary audio channels: 2 */ + put_bits(&c->pb, 3, 1); + + /* Subband activity count: 27 + 27 */ + put_bits(&c->pb, 5, 25); + put_bits(&c->pb, 5, 25); + + /* High frequency VQ start subband: 27, 27 */ + put_bits(&c->pb, 5, 26); + put_bits(&c->pb, 5, 26); + + /* Joint intensity coding index: 0, 0 */ + put_bits(&c->pb, 3, 0); + put_bits(&c->pb, 3, 0); + + /* Transient mode codebook: A4, A4 (arbitrary) */ + put_bits(&c->pb, 2, 0); + put_bits(&c->pb, 2, 0); + + /* Scale factor code book: 7 bit linear, 7-bit sqrt table (for each channel) */ + put_bits(&c->pb, 3, 6); + put_bits(&c->pb, 3, 6); + + /* Bit allocation quantizer select: linear 5-bit */ + put_bits(&c->pb, 3, 6); + put_bits(&c->pb, 3, 6); + + /* Quantization index codebook select: dummy data + to avoid transmission of scale factor adjustment */ + put_bits(&c->pb, 1, 1); put_bits(&c->pb, 1, 1); + put_bits(&c->pb, 2, 3); put_bits(&c->pb, 2, 3); + put_bits(&c->pb, 2, 3); put_bits(&c->pb, 2, 3); + put_bits(&c->pb, 2, 3); put_bits(&c->pb, 2, 3); + put_bits(&c->pb, 2, 3); put_bits(&c->pb, 2, 3); + put_bits(&c->pb, 3, 7); put_bits(&c->pb, 3, 7); + put_bits(&c->pb, 3, 7); put_bits(&c->pb, 3, 7); + put_bits(&c->pb, 3, 7); put_bits(&c->pb, 3, 7); + put_bits(&c->pb, 3, 7); put_bits(&c->pb, 3, 7); + put_bits(&c->pb, 3, 7); put_bits(&c->pb, 3, 7); + + /* Scale factor adjustment index: not transmitted */ +} + +/* TODO: don't hardcode 16-bit quantization */ +static uint32_t quantize(int32_t d) +{ + d = d >> 16; + return d & 0xffff; +} + + +static void put_subframe(DCAContext *c, int32_t subband_data[32][2][32]) +{ + int i, sub, ss, ch; + + /* Subsubframes count: 4 */ + put_bits(&c->pb, 2, 3); + + /* Partial subsubframe sample count: dummy */ + put_bits(&c->pb, 3, 0); + + /* Prediction mode: no ADPCM, in each channel and subband */ + for (ch = 0; ch < 2; ch++) + for (sub = 0; sub < 27; sub++) + put_bits(&c->pb, 1, 0); + + /* Prediction VQ addres: not transmitted */ + /* Bit allocation index: 19 = "16 bits", for each channel and subband */ + for (ch = 0; ch < 2; ch++) + for (sub = 0; sub < 27; sub++) + put_bits(&c->pb, 5, 19); + + /* Transition mode: none for each channel and subband */ + for (ch = 0; ch < 2; ch++) + for (sub = 0; sub < 27; sub++) + put_bits(&c->pb, 1, 0); /* according to Huffman codebook A4 */ + + /* Scale factors: the same for each channel and subband, + encoded according to Table D.1.2 */ + for (ch = 0; ch < 2; ch++) + for (sub = 0; sub < 27; sub++) + put_bits(&c->pb, 7, 110); + + /* Joint subband scale factor codebook select: not transmitted */ + /* Scale factors for joint subband coding: not transmitted */ + /* Stereo down-mix coefficients: not transmitted */ + /* Dynamic range coefficient: not transmitted */ + /* Stde information CRC check word: not transmitted */ + /* VQ encoded high frequency subbands: not transmitted */ + /* LFE data: none */ + /* Audio data: 4 subsubframes */ + + for (ss = 0; ss < 4 ; ss++) + for (ch = 0; ch < 2; ch++) + for (sub = 0; sub < 27; sub++) + for (i = 0; i < 8; i++) + put_bits(&c->pb, 16, quantize(subband_data[ss * 8 + i][ch][sub])); + /* DSYNC */ + align_put_bits(&c->pb); + put_bits(&c->pb, 0xffff, 16); +} + +void put_frame(DCAContext *c, int32_t subband_data[64][2][32], uint8_t *frame) +{ + int channel; + init_put_bits(&c->pb, frame, DCA_MAX_FRAME_SIZE); + + put_frame_header(c); + put_primary_audio_header(c); + for (channel=0 ; channel<2; channel++) + put_subframe(c, &subband_data[32 * channel]); + + flush_put_bits(&c->pb); +} + +static int DCA_encode_frame(AVCodecContext *avctx, + uint8_t *frame, int buf_size, void *data) +{ + int i,k,channel; + DCAContext *c = avctx->priv_data; +// int16_t *samples = data; + +// if (buf_size < MAX_CHANNELS*2048*sizeof(int16_t)) +// return -1; + + // We always get 2048 16bit samples per call so save then until next call + + if (c->fill_samples) { + memcpy(c->st_samples, data, 2048*sizeof(int16_t)); + c->fill_samples = 0; + return 0; + } + memcpy(&c->st_samples[2048], data, 2048*sizeof(int16_t)); + c->fill_samples = 0; + + for (i = 0; i < 64; i ++) /* i is the decimated sample number */ + for (channel=0; channel<2 ; channel++) { + /* Get 32 PCM samples */ + for (k = 0; k < 32; k++) { /* k is the sample number in a 32-sample block */ + c->pcm[k] = c->st_samples[4 * (32*i+k) + 2 * channel] << 16; + } + /* Put subband samples into the proper place */ + qmf_decompose(c, c->pcm, &c->subband[i][channel][0], channel); + } + + put_frame(c, c->subband, frame); + + return 4000; +} + +static int DCA_encode_init(AVCodecContext *avctx) { + DCAContext *c = avctx->priv_data; + + if(avctx->channels != 2 || avctx->sample_rate != 44100) { + av_log(avctx, AV_LOG_ERROR, "Only 44.1 kHz stereo is supported at the moment!\n"); + return -1; + } + + // Make sure that the first call to encode is a fill call + c->fill_samples = 1; + + qmf_init(); + return 0; +} + +AVCodec dca_encoder = { + "dca", + CODEC_TYPE_AUDIO, + CODEC_ID_DTS, + sizeof(DCAContext), + DCA_encode_init, + DCA_encode_frame, + NULL, + NULL, +}; Added: dcaenc/dcaenc.h ============================================================================== --- (empty file) +++ dcaenc/dcaenc.h Thu Mar 20 14:40:49 2008 @@ -0,0 +1,539 @@ +/* + * DCA encoder tables + * Copyright (C) 2008 Alexander E. Patrakov + * + * This file is part of FFmpeg. + * + * FFmpeg is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * FFmpeg is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with FFmpeg; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +/* This is a scaled version of the response of the reference decoder to + this vector of subband samples: ( 1.0 0.0 0.0 ... 0.0 ) + */ + +static const int32_t UnQMF[512] = { +7, +4, +-961, +-2844, +-8024, +-18978, +-32081, +-15635, +-16582, +-18359, +-17180, +-14868, +-11664, +-8051, +-4477, +-1327, +-1670, +-6019, +-11590, +-18030, +-24762, +-30965, +-35947, +-36145, +-37223, +-86311, +-57024, +-27215, +-11274, +-4684, +42, +108, +188, +250, +-1007, +-596, +-2289, +-12218, +-27191, +-124367, +-184256, +-250538, +-323499, +-397784, +-468855, +-532072, +-583000, +-618041, +-777916, +-783868, +-765968, +-724740, +-662468, +-583058, +-490548, +-401623, +-296090, +-73154, +-36711, +-7766, +-2363, +-4905, +2388, +2681, +5651, +4086, +71110, +139742, +188067, +151237, +101355, +309917, +343690, +358839, +357555, +334606, +289625, +224152, +142063, +48725, +74996, +238425, +411666, +584160, +744276, +880730, +983272, +1041933, +1054396, +789531, +851022, +864032, +675431, +418134, +35762, +66911, +103502, +136403, +-55147, +-245269, +-499595, +-808470, +-1136858, +-2010912, +-2581654, +-3151901, +-3696328, +-4196599, +-4633761, +-4993229, +-5262495, +-5436311, +-477650, +-901314, +-1308090, +-1677468, +-1985525, +-2212848, +-2341196, +-2373915, +-2269552, +-2620489, +-2173858, +-1629954, +-946595, +-193499, +1119459, +1138657, +1335311, +1126544, +2765033, +3139603, +3414913, +3599213, +3676363, +3448981, +3328726, +3111551, +2810887, +2428657, +1973684, +1457278, +893848, +300995, +-292521, +-867621, +-1404936, +-1871278, +-2229831, +-2440932, +-2462684, +-2255006, +-1768898, +-1079574, +82115, +1660302, +3660715, +6123610, +8329598, +11888744, +15722147, +19737089, +25647773, +31039399, +36868007, +43124253, +49737161, +56495958, +63668945, +71039511, +78540240, +86089058, +93600041, +100981151, +108136061, +114970055, +121718321, +127566038, +132774642, +137247294, +140894737, +143635018, +145395599, +146114032, +145742999, +144211606, +141594341, +137808404, +132914122, +126912246, +120243281, +112155281, +103338368, +93904953, +83439152, +72921548, +62192990, +51434918, +40894003, +30786726, +21384955, +12939112, +5718193, +-5790, +-3959261, +-5870978, +-5475538, +-2517061, +3247310, +12042937, +24076729, +39531397, +58562863, +81297002, +107826748, +138209187, +172464115, +210569037, +252468018, +298045453, +347168648, +399634888, +455137189, +513586535, +574537650, +637645129, +702597163, +768856566, +836022040, +903618096, +971159680, +1038137214, +1103987353, +1168195035, +1230223053, +1289539180, +1345620373, +1397957958, +1446063657, +1489474689, +1527740502, +1560502307, +1587383079, +1608071145, +1622301248, +1629859340, +1630584888, +1624373875, +1611178348, +1591018893, +1563948667, +1530105004, +1489673227, +1442904075, +1390107674, +1331590427, +1267779478, +1199115126, +1126053392, +1049146257, +968928307, +885965976, +800851610, +714186243, +626590147, +538672486, +451042824, +364299927, +279026812, +195785029, +115109565, +37503924, +-36564551, +-106668063, +-172421668, +-233487283, +-289575706, +-340448569, +-385919511, +-425854915, +-460174578, +-488840702, +-511893328, +-529405118, +-541489888, +-548312207, +-550036471, +-547005316, +-539436808, +-527630488, +-512084785, +-492941605, +-470665204, +-445668379, +-418328829, +-389072810, +-358293846, +-326396227, +-293769619, +-260792276, +-227825056, +-195208961, +-163262121, +-132280748, +-102533727, +-74230062, +-47600637, +-22817785, +-25786, +20662895, +39167253, +55438413, +69453741, +81242430, +90795329, +98213465, +103540643, +106917392, +108861938, +108539682, +106780704, +103722568, +99043289, +93608686, +87266209, +80212203, +72590022, +64603428, +56362402, +48032218, +39749162, +31638971, +23814664, +16376190, +9409836, +2988017, +-2822356, +-7976595, +-12454837, +-16241147, +-19331944, +-21735011, +-23468284, +-24559822, +-25042936, +-25035583, +-24429587, +-23346408, +-21860411, +-20015718, +-17025330, +-14968728, +-12487138, +-9656319, +-7846681, +-5197816, +-2621904, +-144953, +2144746, +3990570, +5845884, +7454650, +8820394, +9929891, +10784445, +11390921, +11762056, +11916017, +12261189, +12117604, +11815303, +11374622, +10815301, +10157241, +9418799, +8629399, +7780776, +7303680, +6353499, +5392738, +4457895, +3543062, +1305978, +1402521, +1084092, +965652, +-151008, +-666667, +-1032157, +-1231475, +-1319043, +-1006023, +-915720, +-773426, +-612377, +-445864, +-291068, +-161337, +-66484, +-11725, +133453, +388184, +615856, +804033, +942377, +1022911, +1041247, +995854, +891376, +572246, +457992, +316365, +172738, +43037, +-117662, +-98542, +-70279, +-41458, +-535790, +-959038, +-1364456, +-1502265, +-1568530, +-2378681, +-2701111, +-2976407, +-3182552, +-3314415, +-3366600, +-3337701, +-3232252, +-3054999, +1984841, +1925903, +1817377, +1669153, +1490069, +1292040, +1086223, +890983, +699163, +201358, +266971, +296990, +198419, +91119, +4737, +5936, +2553, +2060, +-3828, +-1664, +-4917, +-20796, +-36822, +-131247, +-154923, +-162055, +-161354, +-148762, +-125754, +-94473, +-57821, +-19096, +15172, +43004, +65624, +81354, +89325, +89524, +82766, +71075, +55128, +13686, +6921, +1449, +420, +785, +-215, +-179, +-113, +-49, +6002, +16007, +42978, +100662, +171472, +83975, +93702, +108813, +111893, +110272, +103914, +93973, +81606, +68041, +-54058, +-60695, +-65277, +-67224, +-66213, +-62082, +-55574, +-42988, +-35272, +-63735, +-33501, +-12671, +-4038, +-1232, +5, +7 +}; Added: dcaenc/ffmpeg.patch ============================================================================== --- (empty file) +++ dcaenc/ffmpeg.patch Thu Mar 20 14:40:49 2008 @@ -0,0 +1,63 @@ +Index: libavcodec/Makefile +=================================================================== +--- libavcodec/Makefile (revision 12509) ++++ libavcodec/Makefile (working copy) +@@ -53,6 +53,7 @@ + OBJS-$(CONFIG_CSCD_DECODER) += cscd.o + OBJS-$(CONFIG_CYUV_DECODER) += cyuv.o + OBJS-$(CONFIG_DCA_DECODER) += dca.o ++OBJS-$(CONFIG_DCA_ENCODER) += dcaenc.o + OBJS-$(CONFIG_DNXHD_DECODER) += dnxhddec.o dnxhddata.o + OBJS-$(CONFIG_DNXHD_ENCODER) += dnxhdenc.o dnxhddata.o mpegvideo_enc.o motion_est.o ratecontrol.o mpeg12data.o mpegvideo.o + OBJS-$(CONFIG_DSICINAUDIO_DECODER) += dsicinav.o +Index: libavcodec/allcodecs.c +=================================================================== +--- libavcodec/allcodecs.c (revision 12509) ++++ libavcodec/allcodecs.c (working copy) +@@ -179,7 +179,7 @@ + REGISTER_DECODER (APE, ape); + REGISTER_DECODER (ATRAC3, atrac3); + REGISTER_DECODER (COOK, cook); +- REGISTER_DECODER (DCA, dca); ++ REGISTER_ENCDEC (DCA, dca); + REGISTER_DECODER (DSICINAUDIO, dsicinaudio); + REGISTER_ENCDEC (FLAC, flac); + REGISTER_DECODER (IMC, imc); +Index: libavformat/raw.c +=================================================================== +--- libavformat/raw.c (revision 12509) ++++ libavformat/raw.c (working copy) +@@ -513,6 +513,20 @@ + raw_write_packet, + .flags= AVFMT_NOTIMESTAMPS, + }; ++ ++AVOutputFormat dts_muxer = { ++ "dts", ++ "raw dts", ++ "audio/x-dca", ++ "dts", ++ 0, ++ CODEC_ID_DTS, ++ 0, ++ NULL, ++ raw_write_packet, ++ .flags= AVFMT_NOTIMESTAMPS, ++}; ++ + #endif //CONFIG_MUXERS + + AVInputFormat dts_demuxer = { +Index: libavformat/allformats.c +=================================================================== +--- libavformat/allformats.c (revision 12509) ++++ libavformat/allformats.c (working copy) +@@ -69,7 +69,7 @@ + REGISTER_MUXER (CRC, crc); + REGISTER_DEMUXER (DAUD, daud); + REGISTER_DEMUXER (DSICIN, dsicin); +- REGISTER_DEMUXER (DTS, dts); ++ REGISTER_MUXDEMUX (DTS, dts); + REGISTER_MUXDEMUX (DV, dv); + REGISTER_DEMUXER (DXA, dxa); + REGISTER_DEMUXER (EA, ea); Added: dcaenc/readme ============================================================================== --- (empty file) +++ dcaenc/readme Thu Mar 20 14:40:49 2008 @@ -0,0 +1,5 @@ +This source is based on code from here: + +http://roundup.mplayerhq.hu/roundup/ffmpeg/file153/edts-20080207.tar.gz + +
On Thu, Mar 20, 2008 at 02:40:50PM +0100, banan wrote:
--- (empty file) +++ dcaenc/dcaenc.c Thu Mar 20 14:40:49 2008 @@ -0,0 +1,379 @@ +/* + * DCA encoder + * Copyright (C) 2008 Alexander E. Patrakov + * + * This file is part of FFmpeg. + * + * When this file is part of FFmpeg it can be licensed under the LGPL 2.1 + * currently it is a wip
Houston, we have a problem here. First off, the first and the second sentence are a contradiction. Second, FFmpeg is (mostly) licensed as LGPL 2.1+, so this code would cause license incompatibilities... So can we have this as standard LGPL 2.1+ please? Diego
Diego Biurrun wrote:
On Thu, Mar 20, 2008 at 02:40:50PM +0100, banan wrote:
--- (empty file) +++ dcaenc/dcaenc.c Thu Mar 20 14:40:49 2008 @@ -0,0 +1,379 @@ +/* + * DCA encoder + * Copyright (C) 2008 Alexander E. Patrakov + * + * This file is part of FFmpeg. + * + * When this file is part of FFmpeg it can be licensed under the LGPL 2.1 + * currently it is a wip
Houston, we have a problem here. First off, the first and the second sentence are a contradiction. Second, FFmpeg is (mostly) licensed as LGPL 2.1+, so this code would cause license incompatibilities...
So can we have this as standard LGPL 2.1+ please?
Diego
Fixed. MvH Benjamin Larsson
On Thu, Mar 20, 2008 at 03:12:46PM +0100, Benjamin Larsson wrote:
Diego Biurrun wrote:
On Thu, Mar 20, 2008 at 02:40:50PM +0100, banan wrote:
--- (empty file) +++ dcaenc/dcaenc.c Thu Mar 20 14:40:49 2008 @@ -0,0 +1,379 @@ +/* + * DCA encoder + * Copyright (C) 2008 Alexander E. Patrakov + * + * This file is part of FFmpeg. + * + * When this file is part of FFmpeg it can be licensed under the LGPL 2.1 + * currently it is a wip
Houston, we have a problem here. First off, the first and the second sentence are a contradiction. Second, FFmpeg is (mostly) licensed as LGPL 2.1+, so this code would cause license incompatibilities...
So can we have this as standard LGPL 2.1+ please?
Fixed.
That was only a partial fix. Now the promise is for LGPL 2.1, but FFmpeg is LGPL 2.1+ ... Why this "when this code ever enters the magic wonderland, I shall bestow a free license upon it" in the first place? Get the author to release this as LGPL 2.1+. If somebody cleans this up and integrates it into multimedia lib XYZ, it would be without a license grant... Diego
Diego Biurrun wrote:
On Thu, Mar 20, 2008 at 03:12:46PM +0100, Benjamin Larsson wrote:
Diego Biurrun wrote:
On Thu, Mar 20, 2008 at 02:40:50PM +0100, banan wrote:
--- (empty file) +++ dcaenc/dcaenc.c Thu Mar 20 14:40:49 2008 @@ -0,0 +1,379 @@ +/* + * DCA encoder + * Copyright (C) 2008 Alexander E. Patrakov + * + * This file is part of FFmpeg. + * + * When this file is part of FFmpeg it can be licensed under the LGPL 2.1 + * currently it is a wip Houston, we have a problem here. First off, the first and the second sentence are a contradiction. Second, FFmpeg is (mostly) licensed as LGPL 2.1+, so this code would cause license incompatibilities...
So can we have this as standard LGPL 2.1+ please? Fixed.
That was only a partial fix. Now the promise is for LGPL 2.1, but FFmpeg is LGPL 2.1+ ...
Why this "when this code ever enters the magic wonderland, I shall bestow a free license upon it" in the first place? Get the author to release this as LGPL 2.1+.
He did, when the code enters the FFmpeg code base. I just wanna respect his wishes.
If somebody cleans this up and integrates it into multimedia lib XYZ, it would be without a license grant...
Diego
MvH Benjamin Larsson
On Thu, Mar 20, 2008 at 03:27:58PM +0100, Benjamin Larsson wrote:
Diego Biurrun wrote:
On Thu, Mar 20, 2008 at 03:12:46PM +0100, Benjamin Larsson wrote:
Diego Biurrun wrote:
On Thu, Mar 20, 2008 at 02:40:50PM +0100, banan wrote:
--- (empty file) +++ dcaenc/dcaenc.c Thu Mar 20 14:40:49 2008 @@ -0,0 +1,379 @@ +/* + * DCA encoder + * Copyright (C) 2008 Alexander E. Patrakov + * + * This file is part of FFmpeg. + * + * When this file is part of FFmpeg it can be licensed under the LGPL 2.1 + * currently it is a wip Houston, we have a problem here. First off, the first and the second sentence are a contradiction. Second, FFmpeg is (mostly) licensed as LGPL 2.1+, so this code would cause license incompatibilities...
So can we have this as standard LGPL 2.1+ please? Fixed.
That was only a partial fix. Now the promise is for LGPL 2.1, but FFmpeg is LGPL 2.1+ ...
Why this "when this code ever enters the magic wonderland, I shall bestow a free license upon it" in the first place? Get the author to release this as LGPL 2.1+.
He did, when the code enters the FFmpeg code base. I just wanna respect his wishes.
Sure, I'm not saying it's your idea, but it's still a bad idea. If you find a moment, please ask him to license as LGPL 2.1+ without conditions.
If somebody cleans this up and integrates it into multimedia lib XYZ, it would be without a license grant...
Diego
MvH Benjamin Larsson
Ah, your quoting... Remember that you have to set a good example for the SoC newbies around here :) Diego
participants (3)
-
banan -
Benjamin Larsson -
Diego Biurrun