mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2025-01-24 13:56:33 +02:00
Merge remote-tracking branch 'qatar/master'
* qatar/master: (35 commits) fix space type in Changelog ZeroCodec Decoder RealAudio Lossless decoder rtpenc: Use AVFormatContext.packet_size instead of a private option url: Document the expected behaviour of url_read libavformat: Use AVFormatContext.probesize in init_input docs: Fix a stray reference to tags in the generic doxy on dicts cosmetics: Align some AVInput/OutputFormat declarations zmbv: check decompress result zmbv: correct indentation adpcm: convert adpcm_thp to bytestream2. adpcm: convert adpcm_yamaha to bytestream2. adpcm: convert adpcm_swf to bytestream2. adpcm: convert adpcm_sbpro to bytestream2. adpcm: convert adpcm_ct to bytestream2. adpcm: convert adpcm_ima_amv/smjpeg to bytestream2. adpcm: convert adpcm_ea_xas to bytestream2. adpcm: convert adpcm_ea_r1/2/3 to bytestream2. adpcm: convert ea_maxis_xa to bytestream2. adpcm: convert adpcm_ea to bytestream2. ... Conflicts: Changelog libavcodec/Makefile libavcodec/adpcm.c libavcodec/allcodecs.c libavcodec/avcodec.h libavcodec/version.h libavcodec/zerocodec.c libavcodec/zmbv.c libavformat/riff.c libavformat/url.h tests/ref/fate/truemotion1-15 tests/ref/fate/truemotion1-24 Merged-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
commit
479fb7b8af
@ -16,6 +16,7 @@ version next:
|
|||||||
- swapuv filter
|
- swapuv filter
|
||||||
- bbox filter
|
- bbox filter
|
||||||
- XBM encoder
|
- XBM encoder
|
||||||
|
- RealAudio Lossless decoder
|
||||||
- ZeroCodec decoder
|
- ZeroCodec decoder
|
||||||
|
|
||||||
|
|
||||||
|
@ -792,6 +792,7 @@ following image formats are supported:
|
|||||||
@tab Real 28800 bit/s codec
|
@tab Real 28800 bit/s codec
|
||||||
@item RealAudio 3.0 (dnet) @tab IX @tab X
|
@item RealAudio 3.0 (dnet) @tab IX @tab X
|
||||||
@tab Real low bitrate AC-3 codec
|
@tab Real low bitrate AC-3 codec
|
||||||
|
@item RealAudio Lossless @tab @tab X
|
||||||
@item RealAudio SIPR / ACELP.NET @tab @tab X
|
@item RealAudio SIPR / ACELP.NET @tab @tab X
|
||||||
@item Shorten @tab @tab X
|
@item Shorten @tab @tab X
|
||||||
@item Sierra VMD audio @tab @tab X
|
@item Sierra VMD audio @tab @tab X
|
||||||
|
@ -355,6 +355,7 @@ OBJS-$(CONFIG_R210_ENCODER) += r210enc.o
|
|||||||
OBJS-$(CONFIG_RA_144_DECODER) += ra144dec.o ra144.o celp_filters.o
|
OBJS-$(CONFIG_RA_144_DECODER) += ra144dec.o ra144.o celp_filters.o
|
||||||
OBJS-$(CONFIG_RA_144_ENCODER) += ra144enc.o ra144.o celp_filters.o
|
OBJS-$(CONFIG_RA_144_ENCODER) += ra144enc.o ra144.o celp_filters.o
|
||||||
OBJS-$(CONFIG_RA_288_DECODER) += ra288.o celp_math.o celp_filters.o
|
OBJS-$(CONFIG_RA_288_DECODER) += ra288.o celp_math.o celp_filters.o
|
||||||
|
OBJS-$(CONFIG_RALF_DECODER) += ralf.o
|
||||||
OBJS-$(CONFIG_RAWVIDEO_DECODER) += rawdec.o
|
OBJS-$(CONFIG_RAWVIDEO_DECODER) += rawdec.o
|
||||||
OBJS-$(CONFIG_RAWVIDEO_ENCODER) += rawenc.o
|
OBJS-$(CONFIG_RAWVIDEO_ENCODER) += rawenc.o
|
||||||
OBJS-$(CONFIG_RL2_DECODER) += rl2.o
|
OBJS-$(CONFIG_RL2_DECODER) += rl2.o
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -305,6 +305,7 @@ void avcodec_register_all(void)
|
|||||||
REGISTER_DECODER (QDM2, qdm2);
|
REGISTER_DECODER (QDM2, qdm2);
|
||||||
REGISTER_ENCDEC (RA_144, ra_144);
|
REGISTER_ENCDEC (RA_144, ra_144);
|
||||||
REGISTER_DECODER (RA_288, ra_288);
|
REGISTER_DECODER (RA_288, ra_288);
|
||||||
|
REGISTER_DECODER (RALF, ralf);
|
||||||
REGISTER_DECODER (SHORTEN, shorten);
|
REGISTER_DECODER (SHORTEN, shorten);
|
||||||
REGISTER_DECODER (SIPR, sipr);
|
REGISTER_DECODER (SIPR, sipr);
|
||||||
REGISTER_DECODER (SMACKAUD, smackaud);
|
REGISTER_DECODER (SMACKAUD, smackaud);
|
||||||
|
@ -395,8 +395,9 @@ enum CodecID {
|
|||||||
CODEC_ID_8SVX_EXP,
|
CODEC_ID_8SVX_EXP,
|
||||||
CODEC_ID_8SVX_FIB,
|
CODEC_ID_8SVX_FIB,
|
||||||
CODEC_ID_BMV_AUDIO,
|
CODEC_ID_BMV_AUDIO,
|
||||||
|
CODEC_ID_RALF,
|
||||||
CODEC_ID_FFWAVESYNTH = MKBETAG('F','F','W','S'),
|
CODEC_ID_FFWAVESYNTH = MKBETAG('F','F','W','S'),
|
||||||
CODEC_ID_8SVX_RAW = MKBETAG('8','S','V','X'),
|
CODEC_ID_8SVX_RAW = MKBETAG('8','S','V','X'),
|
||||||
CODEC_ID_SONIC = MKBETAG('S','O','N','C'),
|
CODEC_ID_SONIC = MKBETAG('S','O','N','C'),
|
||||||
CODEC_ID_SONIC_LS = MKBETAG('S','O','N','L'),
|
CODEC_ID_SONIC_LS = MKBETAG('S','O','N','L'),
|
||||||
|
|
||||||
|
536
libavcodec/ralf.c
Normal file
536
libavcodec/ralf.c
Normal file
@ -0,0 +1,536 @@
|
|||||||
|
/*
|
||||||
|
* RealAudio Lossless decoder
|
||||||
|
*
|
||||||
|
* Copyright (c) 2012 Konstantin Shishkov
|
||||||
|
*
|
||||||
|
* This file is part of Libav.
|
||||||
|
*
|
||||||
|
* Libav 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.
|
||||||
|
*
|
||||||
|
* Libav 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 Libav; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @file
|
||||||
|
* This is a decoder for Real Audio Lossless format.
|
||||||
|
* Dedicated to the mastermind behind it, Ralph Wiggum.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "avcodec.h"
|
||||||
|
#include "get_bits.h"
|
||||||
|
#include "golomb.h"
|
||||||
|
#include "unary.h"
|
||||||
|
#include "libavutil/audioconvert.h"
|
||||||
|
#include "ralfdata.h"
|
||||||
|
|
||||||
|
#define FILTER_NONE 0
|
||||||
|
#define FILTER_RAW 642
|
||||||
|
|
||||||
|
typedef struct VLCSet {
|
||||||
|
VLC filter_params;
|
||||||
|
VLC bias;
|
||||||
|
VLC coding_mode;
|
||||||
|
VLC filter_coeffs[10][11];
|
||||||
|
VLC short_codes[15];
|
||||||
|
VLC long_codes[125];
|
||||||
|
} VLCSet;
|
||||||
|
|
||||||
|
#define RALF_MAX_PKT_SIZE 8192
|
||||||
|
|
||||||
|
typedef struct RALFContext {
|
||||||
|
AVFrame frame;
|
||||||
|
|
||||||
|
int version;
|
||||||
|
int max_frame_size;
|
||||||
|
VLCSet sets[3];
|
||||||
|
int32_t channel_data[2][4096];
|
||||||
|
|
||||||
|
int filter_params; ///< combined filter parameters for the current channel data
|
||||||
|
int filter_length; ///< length of the filter for the current channel data
|
||||||
|
int filter_bits; ///< filter precision for the current channel data
|
||||||
|
int32_t filter[64];
|
||||||
|
|
||||||
|
int bias[2]; ///< a constant value added to channel data after filtering
|
||||||
|
|
||||||
|
int num_blocks; ///< number of blocks inside the frame
|
||||||
|
int sample_offset;
|
||||||
|
int block_size[1 << 12]; ///< size of the blocks
|
||||||
|
int block_pts[1 << 12]; ///< block start time (in milliseconds)
|
||||||
|
|
||||||
|
uint8_t pkt[16384];
|
||||||
|
int has_pkt;
|
||||||
|
} RALFContext;
|
||||||
|
|
||||||
|
#define MAX_ELEMS 644 // no RALF table uses more than that
|
||||||
|
|
||||||
|
static int init_ralf_vlc(VLC *vlc, const uint8_t *data, int elems)
|
||||||
|
{
|
||||||
|
uint8_t lens[MAX_ELEMS];
|
||||||
|
uint16_t codes[MAX_ELEMS];
|
||||||
|
int counts[17], prefixes[18];
|
||||||
|
int i, cur_len;
|
||||||
|
int max_bits = 0;
|
||||||
|
GetBitContext gb;
|
||||||
|
|
||||||
|
init_get_bits(&gb, data, elems * 4);
|
||||||
|
|
||||||
|
for (i = 0; i <= 16; i++)
|
||||||
|
counts[i] = 0;
|
||||||
|
for (i = 0; i < elems; i++) {
|
||||||
|
cur_len = get_bits(&gb, 4) + 1;
|
||||||
|
counts[cur_len]++;
|
||||||
|
max_bits = FFMAX(max_bits, cur_len);
|
||||||
|
lens[i] = cur_len;
|
||||||
|
}
|
||||||
|
prefixes[1] = 0;
|
||||||
|
for (i = 1; i <= 16; i++)
|
||||||
|
prefixes[i + 1] = (prefixes[i] + counts[i]) << 1;
|
||||||
|
|
||||||
|
for (i = 0; i < elems; i++)
|
||||||
|
codes[i] = prefixes[lens[i]]++;
|
||||||
|
|
||||||
|
return ff_init_vlc_sparse(vlc, FFMIN(max_bits, 9), elems,
|
||||||
|
lens, 1, 1, codes, 2, 2, NULL, 0, 0, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
static av_cold int decode_close(AVCodecContext *avctx)
|
||||||
|
{
|
||||||
|
RALFContext *ctx = avctx->priv_data;
|
||||||
|
int i, j, k;
|
||||||
|
|
||||||
|
for (i = 0; i < 3; i++) {
|
||||||
|
ff_free_vlc(&ctx->sets[i].filter_params);
|
||||||
|
ff_free_vlc(&ctx->sets[i].bias);
|
||||||
|
ff_free_vlc(&ctx->sets[i].coding_mode);
|
||||||
|
for (j = 0; j < 10; j++)
|
||||||
|
for (k = 0; k < 11; k++)
|
||||||
|
ff_free_vlc(&ctx->sets[i].filter_coeffs[j][k]);
|
||||||
|
for (j = 0; j < 15; j++)
|
||||||
|
ff_free_vlc(&ctx->sets[i].short_codes[j]);
|
||||||
|
for (j = 0; j < 125; j++)
|
||||||
|
ff_free_vlc(&ctx->sets[i].long_codes[j]);
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static av_cold int decode_init(AVCodecContext *avctx)
|
||||||
|
{
|
||||||
|
RALFContext *ctx = avctx->priv_data;
|
||||||
|
int i, j, k;
|
||||||
|
int ret;
|
||||||
|
|
||||||
|
if (avctx->extradata_size < 24 || memcmp(avctx->extradata, "LSD:", 4)) {
|
||||||
|
av_log(avctx, AV_LOG_ERROR, "Extradata is not groovy, dude\n");
|
||||||
|
return AVERROR_INVALIDDATA;
|
||||||
|
}
|
||||||
|
|
||||||
|
ctx->version = AV_RB16(avctx->extradata + 4);
|
||||||
|
if (ctx->version != 0x103) {
|
||||||
|
av_log_ask_for_sample(avctx, "unknown version %X\n", ctx->version);
|
||||||
|
return AVERROR_PATCHWELCOME;
|
||||||
|
}
|
||||||
|
|
||||||
|
avctx->channels = AV_RB16(avctx->extradata + 8);
|
||||||
|
avctx->sample_rate = AV_RB32(avctx->extradata + 12);
|
||||||
|
if (avctx->channels < 1 || avctx->channels > 2
|
||||||
|
|| avctx->sample_rate < 8000 || avctx->sample_rate > 96000) {
|
||||||
|
av_log(avctx, AV_LOG_ERROR, "Invalid coding parameters %d Hz %d ch\n",
|
||||||
|
avctx->sample_rate, avctx->channels);
|
||||||
|
return AVERROR_INVALIDDATA;
|
||||||
|
}
|
||||||
|
avctx->sample_fmt = AV_SAMPLE_FMT_S16;
|
||||||
|
avctx->channel_layout = (avctx->channels == 2) ? AV_CH_LAYOUT_STEREO
|
||||||
|
: AV_CH_LAYOUT_MONO;
|
||||||
|
|
||||||
|
avcodec_get_frame_defaults(&ctx->frame);
|
||||||
|
avctx->coded_frame = &ctx->frame;
|
||||||
|
|
||||||
|
ctx->max_frame_size = AV_RB32(avctx->extradata + 16);
|
||||||
|
if (ctx->max_frame_size > (1 << 20) || !ctx->max_frame_size) {
|
||||||
|
av_log(avctx, AV_LOG_ERROR, "invalid frame size %d\n",
|
||||||
|
ctx->max_frame_size);
|
||||||
|
}
|
||||||
|
ctx->max_frame_size = FFMAX(ctx->max_frame_size, avctx->sample_rate);
|
||||||
|
|
||||||
|
for (i = 0; i < 3; i++) {
|
||||||
|
ret = init_ralf_vlc(&ctx->sets[i].filter_params, filter_param_def[i],
|
||||||
|
FILTERPARAM_ELEMENTS);
|
||||||
|
if (ret < 0) {
|
||||||
|
decode_close(avctx);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
ret = init_ralf_vlc(&ctx->sets[i].bias, bias_def[i], BIAS_ELEMENTS);
|
||||||
|
if (ret < 0) {
|
||||||
|
decode_close(avctx);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
ret = init_ralf_vlc(&ctx->sets[i].coding_mode, coding_mode_def[i],
|
||||||
|
CODING_MODE_ELEMENTS);
|
||||||
|
if (ret < 0) {
|
||||||
|
decode_close(avctx);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
for (j = 0; j < 10; j++) {
|
||||||
|
for (k = 0; k < 11; k++) {
|
||||||
|
ret = init_ralf_vlc(&ctx->sets[i].filter_coeffs[j][k],
|
||||||
|
filter_coeffs_def[i][j][k],
|
||||||
|
FILTER_COEFFS_ELEMENTS);
|
||||||
|
if (ret < 0) {
|
||||||
|
decode_close(avctx);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
for (j = 0; j < 15; j++) {
|
||||||
|
ret = init_ralf_vlc(&ctx->sets[i].short_codes[j],
|
||||||
|
short_codes_def[i][j], SHORT_CODES_ELEMENTS);
|
||||||
|
if (ret < 0) {
|
||||||
|
decode_close(avctx);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
for (j = 0; j < 125; j++) {
|
||||||
|
ret = init_ralf_vlc(&ctx->sets[i].long_codes[j],
|
||||||
|
long_codes_def[i][j], LONG_CODES_ELEMENTS);
|
||||||
|
if (ret < 0) {
|
||||||
|
decode_close(avctx);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline int extend_code(GetBitContext *gb, int val, int range, int bits)
|
||||||
|
{
|
||||||
|
if (val == 0) {
|
||||||
|
val = -range - get_ue_golomb(gb);
|
||||||
|
} else if (val == range * 2) {
|
||||||
|
val = range + get_ue_golomb(gb);
|
||||||
|
} else {
|
||||||
|
val -= range;
|
||||||
|
}
|
||||||
|
if (bits)
|
||||||
|
val = (val << bits) | get_bits(gb, bits);
|
||||||
|
return val;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int decode_channel(RALFContext *ctx, GetBitContext *gb, int ch,
|
||||||
|
int length, int mode, int bits)
|
||||||
|
{
|
||||||
|
int i, t;
|
||||||
|
int code_params;
|
||||||
|
VLCSet *set = ctx->sets + mode;
|
||||||
|
VLC *code_vlc; int range, range2, add_bits;
|
||||||
|
int *dst = ctx->channel_data[ch];
|
||||||
|
|
||||||
|
ctx->filter_params = get_vlc2(gb, set->filter_params.table, 9, 2);
|
||||||
|
ctx->filter_bits = (ctx->filter_params - 2) >> 6;
|
||||||
|
ctx->filter_length = ctx->filter_params - (ctx->filter_bits << 6) - 1;
|
||||||
|
|
||||||
|
if (ctx->filter_params == FILTER_RAW) {
|
||||||
|
for (i = 0; i < length; i++)
|
||||||
|
dst[i] = get_bits(gb, bits);
|
||||||
|
ctx->bias[ch] = 0;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
ctx->bias[ch] = get_vlc2(gb, set->bias.table, 9, 2);
|
||||||
|
ctx->bias[ch] = extend_code(gb, ctx->bias[ch], 127, 4);
|
||||||
|
|
||||||
|
if (ctx->filter_params == FILTER_NONE) {
|
||||||
|
memset(dst, 0, sizeof(*dst) * length);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (ctx->filter_params > 1) {
|
||||||
|
int cmode = 0, coeff = 0;
|
||||||
|
VLC *vlc = set->filter_coeffs[ctx->filter_bits] + 5;
|
||||||
|
|
||||||
|
add_bits = ctx->filter_bits;
|
||||||
|
|
||||||
|
for (i = 0; i < ctx->filter_length; i++) {
|
||||||
|
t = get_vlc2(gb, vlc[cmode].table, vlc[cmode].bits, 2);
|
||||||
|
t = extend_code(gb, t, 21, add_bits);
|
||||||
|
if (!cmode)
|
||||||
|
coeff -= 12 << add_bits;
|
||||||
|
coeff = t - coeff;
|
||||||
|
ctx->filter[i] = coeff;
|
||||||
|
|
||||||
|
cmode = coeff >> add_bits;
|
||||||
|
if (cmode < 0) {
|
||||||
|
cmode = -1 - av_log2(-cmode);
|
||||||
|
if (cmode < -5)
|
||||||
|
cmode = -5;
|
||||||
|
} else if (cmode > 0) {
|
||||||
|
cmode = 1 + av_log2(cmode);
|
||||||
|
if (cmode > 5)
|
||||||
|
cmode = 5;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
code_params = get_vlc2(gb, set->coding_mode.table, set->coding_mode.bits, 2);
|
||||||
|
if (code_params >= 15) {
|
||||||
|
add_bits = av_clip((code_params / 5 - 3) / 2, 0, 10);
|
||||||
|
if (add_bits > 9 && (code_params % 5) != 2)
|
||||||
|
add_bits--;
|
||||||
|
range = 10;
|
||||||
|
range2 = 21;
|
||||||
|
code_vlc = set->long_codes + code_params - 15;
|
||||||
|
} else {
|
||||||
|
add_bits = 0;
|
||||||
|
range = 6;
|
||||||
|
range2 = 13;
|
||||||
|
code_vlc = set->short_codes + code_params;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (i = 0; i < length; i += 2) {
|
||||||
|
int code1, code2;
|
||||||
|
|
||||||
|
t = get_vlc2(gb, code_vlc->table, code_vlc->bits, 2);
|
||||||
|
code1 = t / range2;
|
||||||
|
code2 = t % range2;
|
||||||
|
dst[i] = extend_code(gb, code1, range, 0) << add_bits;
|
||||||
|
dst[i + 1] = extend_code(gb, code2, range, 0) << add_bits;
|
||||||
|
if (add_bits) {
|
||||||
|
dst[i] |= get_bits(gb, add_bits);
|
||||||
|
dst[i + 1] |= get_bits(gb, add_bits);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void apply_lpc(RALFContext *ctx, int ch, int length, int bits)
|
||||||
|
{
|
||||||
|
int i, j, acc;
|
||||||
|
int *audio = ctx->channel_data[ch];
|
||||||
|
int bias = 1 << (ctx->filter_bits - 1);
|
||||||
|
int max_clip = (1 << bits) - 1, min_clip = -max_clip - 1;
|
||||||
|
|
||||||
|
for (i = 1; i < length; i++) {
|
||||||
|
int flen = FFMIN(ctx->filter_length, i);
|
||||||
|
|
||||||
|
acc = 0;
|
||||||
|
for (j = 0; j < flen; j++)
|
||||||
|
acc += ctx->filter[j] * audio[i - j - 1];
|
||||||
|
if (acc < 0) {
|
||||||
|
acc = (acc + bias - 1) >> ctx->filter_bits;
|
||||||
|
acc = FFMAX(acc, min_clip);
|
||||||
|
} else {
|
||||||
|
acc = (acc + bias) >> ctx->filter_bits;
|
||||||
|
acc = FFMIN(acc, max_clip);
|
||||||
|
}
|
||||||
|
audio[i] += acc;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static int decode_block(AVCodecContext *avctx, GetBitContext *gb, int16_t *dst)
|
||||||
|
{
|
||||||
|
RALFContext *ctx = avctx->priv_data;
|
||||||
|
int len, ch, ret;
|
||||||
|
int dmode, mode[2], bits[2];
|
||||||
|
int *ch0, *ch1;
|
||||||
|
int i, t, t2;
|
||||||
|
|
||||||
|
len = 12 - get_unary(gb, 0, 6);
|
||||||
|
|
||||||
|
if (len <= 7) len ^= 1; // codes for length = 6 and 7 are swapped
|
||||||
|
len = 1 << len;
|
||||||
|
|
||||||
|
if (ctx->sample_offset + len > ctx->max_frame_size) {
|
||||||
|
av_log(avctx, AV_LOG_ERROR,
|
||||||
|
"Decoder's stomach is crying, it ate too many samples\n");
|
||||||
|
return AVERROR_INVALIDDATA;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (avctx->channels > 1)
|
||||||
|
dmode = get_bits(gb, 2) + 1;
|
||||||
|
else
|
||||||
|
dmode = 0;
|
||||||
|
|
||||||
|
mode[0] = (dmode == 4) ? 1 : 0;
|
||||||
|
mode[1] = (dmode >= 2) ? 2 : 0;
|
||||||
|
bits[0] = 16;
|
||||||
|
bits[1] = (mode[1] == 2) ? 17 : 16;
|
||||||
|
|
||||||
|
for (ch = 0; ch < avctx->channels; ch++) {
|
||||||
|
if ((ret = decode_channel(ctx, gb, ch, len, mode[ch], bits[ch])) < 0)
|
||||||
|
return ret;
|
||||||
|
if (ctx->filter_params > 1 && ctx->filter_params != FILTER_RAW) {
|
||||||
|
ctx->filter_bits += 3;
|
||||||
|
apply_lpc(ctx, ch, len, bits[ch]);
|
||||||
|
}
|
||||||
|
if (get_bits_left(gb) < 0)
|
||||||
|
return AVERROR_INVALIDDATA;
|
||||||
|
}
|
||||||
|
ch0 = ctx->channel_data[0];
|
||||||
|
ch1 = ctx->channel_data[1];
|
||||||
|
switch (dmode) {
|
||||||
|
case 0:
|
||||||
|
for (i = 0; i < len; i++)
|
||||||
|
*dst++ = ch0[i] + ctx->bias[0];
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
for (i = 0; i < len; i++) {
|
||||||
|
*dst++ = ch0[i] + ctx->bias[0];
|
||||||
|
*dst++ = ch1[i] + ctx->bias[1];
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
for (i = 0; i < len; i++) {
|
||||||
|
ch0[i] += ctx->bias[0];
|
||||||
|
*dst++ = ch0[i];
|
||||||
|
*dst++ = ch0[i] - (ch1[i] + ctx->bias[1]);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
for (i = 0; i < len; i++) {
|
||||||
|
t = ch0[i] + ctx->bias[0];
|
||||||
|
t2 = ch1[i] + ctx->bias[1];
|
||||||
|
*dst++ = t + t2;
|
||||||
|
*dst++ = t;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 4:
|
||||||
|
for (i = 0; i < len; i++) {
|
||||||
|
t = ch1[i] + ctx->bias[1];
|
||||||
|
t2 = ((ch0[i] + ctx->bias[0]) << 1) | (t & 1);
|
||||||
|
*dst++ = (t2 + t) / 2;
|
||||||
|
*dst++ = (t2 - t) / 2;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
ctx->sample_offset += len;
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int decode_frame(AVCodecContext *avctx, void *data, int *got_frame_ptr,
|
||||||
|
AVPacket *avpkt)
|
||||||
|
{
|
||||||
|
RALFContext *ctx = avctx->priv_data;
|
||||||
|
int16_t *samples;
|
||||||
|
int ret;
|
||||||
|
GetBitContext gb;
|
||||||
|
int table_size, table_bytes, i;
|
||||||
|
const uint8_t *src, *block_pointer;
|
||||||
|
int src_size;
|
||||||
|
int bytes_left;
|
||||||
|
|
||||||
|
if (ctx->has_pkt) {
|
||||||
|
ctx->has_pkt = 0;
|
||||||
|
table_bytes = (AV_RB16(avpkt->data) + 7) >> 3;
|
||||||
|
if (table_bytes + 3 > avpkt->size || avpkt->size > RALF_MAX_PKT_SIZE) {
|
||||||
|
av_log(avctx, AV_LOG_ERROR, "Wrong packet's breath smells of wrong data!\n");
|
||||||
|
return AVERROR_INVALIDDATA;
|
||||||
|
}
|
||||||
|
if (memcmp(ctx->pkt, avpkt->data, 2 + table_bytes)) {
|
||||||
|
av_log(avctx, AV_LOG_ERROR, "Wrong packet tails are wrong!\n");
|
||||||
|
return AVERROR_INVALIDDATA;
|
||||||
|
}
|
||||||
|
|
||||||
|
src = ctx->pkt;
|
||||||
|
src_size = RALF_MAX_PKT_SIZE + avpkt->size;
|
||||||
|
memcpy(ctx->pkt + RALF_MAX_PKT_SIZE, avpkt->data + 2 + table_bytes,
|
||||||
|
avpkt->size - 2 - table_bytes);
|
||||||
|
} else {
|
||||||
|
if (avpkt->size == RALF_MAX_PKT_SIZE) {
|
||||||
|
memcpy(ctx->pkt, avpkt->data, avpkt->size);
|
||||||
|
ctx->has_pkt = 1;
|
||||||
|
*got_frame_ptr = 0;
|
||||||
|
|
||||||
|
return avpkt->size;
|
||||||
|
}
|
||||||
|
src = avpkt->data;
|
||||||
|
src_size = avpkt->size;
|
||||||
|
}
|
||||||
|
|
||||||
|
ctx->frame.nb_samples = ctx->max_frame_size;
|
||||||
|
if ((ret = avctx->get_buffer(avctx, &ctx->frame)) < 0) {
|
||||||
|
av_log(avctx, AV_LOG_ERROR, "Me fail get_buffer()? That's unpossible!\n");
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
samples = (int16_t*)ctx->frame.data[0];
|
||||||
|
|
||||||
|
if (src_size < 5) {
|
||||||
|
av_log(avctx, AV_LOG_ERROR, "too short packets are too short!\n");
|
||||||
|
return AVERROR_INVALIDDATA;
|
||||||
|
}
|
||||||
|
table_size = AV_RB16(src);
|
||||||
|
table_bytes = (table_size + 7) >> 3;
|
||||||
|
if (src_size < table_bytes + 3) {
|
||||||
|
av_log(avctx, AV_LOG_ERROR, "short packets are short!\n");
|
||||||
|
return AVERROR_INVALIDDATA;
|
||||||
|
}
|
||||||
|
init_get_bits(&gb, src + 2, table_size);
|
||||||
|
ctx->num_blocks = 0;
|
||||||
|
while (get_bits_left(&gb) > 0) {
|
||||||
|
ctx->block_size[ctx->num_blocks] = get_bits(&gb, 15);
|
||||||
|
if (get_bits1(&gb)) {
|
||||||
|
ctx->block_pts[ctx->num_blocks] = get_bits(&gb, 9);
|
||||||
|
} else {
|
||||||
|
ctx->block_pts[ctx->num_blocks] = 0;
|
||||||
|
}
|
||||||
|
ctx->num_blocks++;
|
||||||
|
}
|
||||||
|
|
||||||
|
block_pointer = src + table_bytes + 2;
|
||||||
|
bytes_left = src_size - table_bytes - 2;
|
||||||
|
ctx->sample_offset = 0;
|
||||||
|
for (i = 0; i < ctx->num_blocks; i++) {
|
||||||
|
if (bytes_left < ctx->block_size[i]) {
|
||||||
|
av_log(avctx, AV_LOG_ERROR, "I'm pedaling backwards\n");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
init_get_bits(&gb, block_pointer, ctx->block_size[i] * 8);
|
||||||
|
if (decode_block(avctx, &gb, samples + ctx->sample_offset
|
||||||
|
* avctx->channels) < 0) {
|
||||||
|
av_log(avctx, AV_LOG_ERROR, "Sir, I got carsick in your office. Not decoding the rest of packet.\n");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
block_pointer += ctx->block_size[i];
|
||||||
|
bytes_left -= ctx->block_size[i];
|
||||||
|
}
|
||||||
|
|
||||||
|
ctx->frame.nb_samples = ctx->sample_offset;
|
||||||
|
*got_frame_ptr = ctx->sample_offset > 0;
|
||||||
|
*(AVFrame*)data = ctx->frame;
|
||||||
|
|
||||||
|
return avpkt->size;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void decode_flush(AVCodecContext *avctx)
|
||||||
|
{
|
||||||
|
RALFContext *ctx = avctx->priv_data;
|
||||||
|
|
||||||
|
ctx->has_pkt = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
AVCodec ff_ralf_decoder = {
|
||||||
|
.name = "ralf",
|
||||||
|
.type = AVMEDIA_TYPE_AUDIO,
|
||||||
|
.id = CODEC_ID_RALF,
|
||||||
|
.priv_data_size = sizeof(RALFContext),
|
||||||
|
.init = decode_init,
|
||||||
|
.close = decode_close,
|
||||||
|
.decode = decode_frame,
|
||||||
|
.flush = decode_flush,
|
||||||
|
.capabilities = CODEC_CAP_DR1,
|
||||||
|
.long_name = NULL_IF_CONFIG_SMALL("RealAudio Lossless")
|
||||||
|
};
|
9920
libavcodec/ralfdata.h
Normal file
9920
libavcodec/ralfdata.h
Normal file
File diff suppressed because it is too large
Load Diff
@ -2036,7 +2036,7 @@ int av_get_audio_frame_duration(AVCodecContext *avctx, int frame_bytes)
|
|||||||
case CODEC_ID_ADPCM_IMA_WAV:
|
case CODEC_ID_ADPCM_IMA_WAV:
|
||||||
return blocks * (1 + (ba - 4 * ch) / (4 * ch) * 8);
|
return blocks * (1 + (ba - 4 * ch) / (4 * ch) * 8);
|
||||||
case CODEC_ID_ADPCM_IMA_DK3:
|
case CODEC_ID_ADPCM_IMA_DK3:
|
||||||
return blocks * (((ba - 16) * 8 / 3) / ch);
|
return blocks * (((ba - 16) * 2 / 3 * 4) / ch);
|
||||||
case CODEC_ID_ADPCM_IMA_DK4:
|
case CODEC_ID_ADPCM_IMA_DK4:
|
||||||
return blocks * (1 + (ba - 4 * ch) * 2 / ch);
|
return blocks * (1 + (ba - 4 * ch) * 2 / ch);
|
||||||
case CODEC_ID_ADPCM_MS:
|
case CODEC_ID_ADPCM_MS:
|
||||||
|
@ -21,7 +21,7 @@
|
|||||||
#define AVCODEC_VERSION_H
|
#define AVCODEC_VERSION_H
|
||||||
|
|
||||||
#define LIBAVCODEC_VERSION_MAJOR 54
|
#define LIBAVCODEC_VERSION_MAJOR 54
|
||||||
#define LIBAVCODEC_VERSION_MINOR 11
|
#define LIBAVCODEC_VERSION_MINOR 12
|
||||||
#define LIBAVCODEC_VERSION_MICRO 100
|
#define LIBAVCODEC_VERSION_MICRO 100
|
||||||
|
|
||||||
#define LIBAVCODEC_VERSION_INT AV_VERSION_INT(LIBAVCODEC_VERSION_MAJOR, \
|
#define LIBAVCODEC_VERSION_INT AV_VERSION_INT(LIBAVCODEC_VERSION_MAJOR, \
|
||||||
|
@ -19,6 +19,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#include <zlib.h>
|
#include <zlib.h>
|
||||||
|
|
||||||
#include "avcodec.h"
|
#include "avcodec.h"
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
@ -75,7 +76,8 @@ static int zerocodec_decode_frame(AVCodecContext *avctx, void *data,
|
|||||||
zret = inflate(zstream, Z_SYNC_FLUSH);
|
zret = inflate(zstream, Z_SYNC_FLUSH);
|
||||||
|
|
||||||
if (zret != Z_OK && zret != Z_STREAM_END) {
|
if (zret != Z_OK && zret != Z_STREAM_END) {
|
||||||
av_log(avctx, AV_LOG_ERROR, "Inflate failed with return code: %d\n", zret);
|
av_log(avctx, AV_LOG_ERROR,
|
||||||
|
"Inflate failed with return code: %d\n", zret);
|
||||||
return AVERROR(EINVAL);
|
return AVERROR(EINVAL);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -94,7 +96,8 @@ static int zerocodec_decode_frame(AVCodecContext *avctx, void *data,
|
|||||||
zret = inflate(zstream, Z_SYNC_FLUSH);
|
zret = inflate(zstream, Z_SYNC_FLUSH);
|
||||||
|
|
||||||
if (zret != Z_OK && zret != Z_STREAM_END) {
|
if (zret != Z_OK && zret != Z_STREAM_END) {
|
||||||
av_log(avctx, AV_LOG_ERROR, "Inflate failed with return code: %d\n", zret);
|
av_log(avctx, AV_LOG_ERROR,
|
||||||
|
"Inflate failed with return code: %d\n", zret);
|
||||||
return AVERROR(EINVAL);
|
return AVERROR(EINVAL);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -495,10 +495,10 @@ static int decode_frame(AVCodecContext *avctx, void *data, int *data_size, AVPac
|
|||||||
c->decode_intra= decode_intra;
|
c->decode_intra= decode_intra;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (c->decode_intra == NULL) {
|
if (c->decode_intra == NULL) {
|
||||||
av_log(avctx, AV_LOG_ERROR, "Error! Got no format or no keyframe!\n");
|
av_log(avctx, AV_LOG_ERROR, "Error! Got no format or no keyframe!\n");
|
||||||
return AVERROR_INVALIDDATA;
|
return AVERROR_INVALIDDATA;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (c->comp == 0) { //Uncompressed data
|
if (c->comp == 0) { //Uncompressed data
|
||||||
memcpy(c->decomp_buf, buf, len);
|
memcpy(c->decomp_buf, buf, len);
|
||||||
@ -509,7 +509,11 @@ static int decode_frame(AVCodecContext *avctx, void *data, int *data_size, AVPac
|
|||||||
c->zstream.avail_in = len;
|
c->zstream.avail_in = len;
|
||||||
c->zstream.next_out = c->decomp_buf;
|
c->zstream.next_out = c->decomp_buf;
|
||||||
c->zstream.avail_out = c->decomp_size;
|
c->zstream.avail_out = c->decomp_size;
|
||||||
inflate(&c->zstream, Z_FINISH);
|
zret = inflate(&c->zstream, Z_SYNC_FLUSH);
|
||||||
|
if (zret != Z_OK && zret != Z_STREAM_END) {
|
||||||
|
av_log(avctx, AV_LOG_ERROR, "inflate error %d\n", zret);
|
||||||
|
return AVERROR_INVALIDDATA;
|
||||||
|
}
|
||||||
c->decomp_len = c->zstream.total_out;
|
c->decomp_len = c->zstream.total_out;
|
||||||
}
|
}
|
||||||
if (c->flags & ZMBV_KEYFRAME) {
|
if (c->flags & ZMBV_KEYFRAME) {
|
||||||
|
@ -42,5 +42,6 @@ const AVCodecTag ff_rm_codec_tags[] = {
|
|||||||
{ CODEC_ID_SIPR, MKTAG('s','i','p','r') },
|
{ CODEC_ID_SIPR, MKTAG('s','i','p','r') },
|
||||||
{ CODEC_ID_AAC, MKTAG('r','a','a','c') },
|
{ CODEC_ID_AAC, MKTAG('r','a','a','c') },
|
||||||
{ CODEC_ID_AAC, MKTAG('r','a','c','p') },
|
{ CODEC_ID_AAC, MKTAG('r','a','c','p') },
|
||||||
|
{ CODEC_ID_RALF, MKTAG('L','S','D',':') },
|
||||||
{ CODEC_ID_NONE },
|
{ CODEC_ID_NONE },
|
||||||
};
|
};
|
||||||
|
@ -311,6 +311,15 @@ ff_rm_read_mdpr_codecdata (AVFormatContext *s, AVIOContext *pb,
|
|||||||
/* ra type header */
|
/* ra type header */
|
||||||
if (rm_read_audio_stream_info(s, pb, st, rst, 0))
|
if (rm_read_audio_stream_info(s, pb, st, rst, 0))
|
||||||
return -1;
|
return -1;
|
||||||
|
} else if (v == MKBETAG('L', 'S', 'D', ':')) {
|
||||||
|
avio_seek(pb, -4, SEEK_CUR);
|
||||||
|
if ((ret = rm_read_extradata(pb, st->codec, codec_data_size)) < 0)
|
||||||
|
return ret;
|
||||||
|
|
||||||
|
st->codec->codec_type = AVMEDIA_TYPE_AUDIO;
|
||||||
|
st->codec->codec_tag = AV_RL32(st->codec->extradata);
|
||||||
|
st->codec->codec_id = ff_codec_get_id(ff_rm_codec_tags,
|
||||||
|
st->codec->codec_tag);
|
||||||
} else {
|
} else {
|
||||||
int fps;
|
int fps;
|
||||||
if (avio_rl32(pb) != MKTAG('V', 'I', 'D', 'O')) {
|
if (avio_rl32(pb) != MKTAG('V', 'I', 'D', 'O')) {
|
||||||
|
@ -33,7 +33,6 @@
|
|||||||
static const AVOption options[] = {
|
static const AVOption options[] = {
|
||||||
FF_RTP_FLAG_OPTS(RTPMuxContext, flags)
|
FF_RTP_FLAG_OPTS(RTPMuxContext, flags)
|
||||||
{ "payload_type", "Specify RTP payload type", offsetof(RTPMuxContext, payload_type), AV_OPT_TYPE_INT, {.dbl = -1 }, -1, 127, AV_OPT_FLAG_ENCODING_PARAM },
|
{ "payload_type", "Specify RTP payload type", offsetof(RTPMuxContext, payload_type), AV_OPT_TYPE_INT, {.dbl = -1 }, -1, 127, AV_OPT_FLAG_ENCODING_PARAM },
|
||||||
{ "max_packet_size", "Max packet size", offsetof(RTPMuxContext, max_packet_size), AV_OPT_TYPE_INT, {.dbl = 0 }, 0, INT_MAX, AV_OPT_FLAG_ENCODING_PARAM },
|
|
||||||
{ NULL },
|
{ NULL },
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -110,21 +109,21 @@ static int rtp_write_header(AVFormatContext *s1)
|
|||||||
s->first_rtcp_ntp_time = (s1->start_time_realtime / 1000) * 1000 +
|
s->first_rtcp_ntp_time = (s1->start_time_realtime / 1000) * 1000 +
|
||||||
NTP_OFFSET_US;
|
NTP_OFFSET_US;
|
||||||
|
|
||||||
if (s->max_packet_size) {
|
if (s1->packet_size) {
|
||||||
if (s1->pb->max_packet_size)
|
if (s1->pb->max_packet_size)
|
||||||
s->max_packet_size = FFMIN(s->max_packet_size,
|
s1->packet_size = FFMIN(s1->packet_size,
|
||||||
s1->pb->max_packet_size);
|
s1->pb->max_packet_size);
|
||||||
} else
|
} else
|
||||||
s->max_packet_size = s1->pb->max_packet_size;
|
s1->packet_size = s1->pb->max_packet_size;
|
||||||
if (s->max_packet_size <= 12) {
|
if (s1->packet_size <= 12) {
|
||||||
av_log(s1, AV_LOG_ERROR, "Max packet size %d too low\n", s->max_packet_size);
|
av_log(s1, AV_LOG_ERROR, "Max packet size %d too low\n", s1->packet_size);
|
||||||
return AVERROR(EIO);
|
return AVERROR(EIO);
|
||||||
}
|
}
|
||||||
s->buf = av_malloc(s->max_packet_size);
|
s->buf = av_malloc(s1->packet_size);
|
||||||
if (s->buf == NULL) {
|
if (s->buf == NULL) {
|
||||||
return AVERROR(ENOMEM);
|
return AVERROR(ENOMEM);
|
||||||
}
|
}
|
||||||
s->max_payload_size = s->max_packet_size - 12;
|
s->max_payload_size = s1->packet_size - 12;
|
||||||
|
|
||||||
s->max_frames_per_packet = 0;
|
s->max_frames_per_packet = 0;
|
||||||
if (s1->max_delay) {
|
if (s1->max_delay) {
|
||||||
|
@ -34,7 +34,6 @@ struct RTPMuxContext {
|
|||||||
uint32_t timestamp;
|
uint32_t timestamp;
|
||||||
uint32_t base_timestamp;
|
uint32_t base_timestamp;
|
||||||
uint32_t cur_timestamp;
|
uint32_t cur_timestamp;
|
||||||
int max_packet_size;
|
|
||||||
int max_payload_size;
|
int max_payload_size;
|
||||||
int num_frames;
|
int num_frames;
|
||||||
|
|
||||||
|
@ -1924,7 +1924,7 @@ AVInputFormat ff_sdp_demuxer = {
|
|||||||
.read_header = sdp_read_header,
|
.read_header = sdp_read_header,
|
||||||
.read_packet = ff_rtsp_fetch_packet,
|
.read_packet = ff_rtsp_fetch_packet,
|
||||||
.read_close = sdp_read_close,
|
.read_close = sdp_read_close,
|
||||||
.priv_class = &sdp_demuxer_class
|
.priv_class = &sdp_demuxer_class,
|
||||||
};
|
};
|
||||||
#endif /* CONFIG_SDP_DEMUXER */
|
#endif /* CONFIG_SDP_DEMUXER */
|
||||||
|
|
||||||
@ -2042,7 +2042,7 @@ AVInputFormat ff_rtp_demuxer = {
|
|||||||
.read_header = rtp_read_header,
|
.read_header = rtp_read_header,
|
||||||
.read_packet = ff_rtsp_fetch_packet,
|
.read_packet = ff_rtsp_fetch_packet,
|
||||||
.read_close = sdp_read_close,
|
.read_close = sdp_read_close,
|
||||||
.flags = AVFMT_NOFILE,
|
.flags = AVFMT_NOFILE,
|
||||||
.priv_class = &rtp_demuxer_class
|
.priv_class = &rtp_demuxer_class,
|
||||||
};
|
};
|
||||||
#endif /* CONFIG_RTP_DEMUXER */
|
#endif /* CONFIG_RTP_DEMUXER */
|
||||||
|
@ -409,8 +409,8 @@ AVInputFormat ff_rtsp_demuxer = {
|
|||||||
.read_packet = rtsp_read_packet,
|
.read_packet = rtsp_read_packet,
|
||||||
.read_close = rtsp_read_close,
|
.read_close = rtsp_read_close,
|
||||||
.read_seek = rtsp_read_seek,
|
.read_seek = rtsp_read_seek,
|
||||||
.flags = AVFMT_NOFILE,
|
.flags = AVFMT_NOFILE,
|
||||||
.read_play = rtsp_read_play,
|
.read_play = rtsp_read_play,
|
||||||
.read_pause = rtsp_read_pause,
|
.read_pause = rtsp_read_pause,
|
||||||
.priv_class = &rtsp_demuxer_class,
|
.priv_class = &rtsp_demuxer_class,
|
||||||
};
|
};
|
||||||
|
@ -242,6 +242,6 @@ AVOutputFormat ff_rtsp_muxer = {
|
|||||||
.write_header = rtsp_write_header,
|
.write_header = rtsp_write_header,
|
||||||
.write_packet = rtsp_write_packet,
|
.write_packet = rtsp_write_packet,
|
||||||
.write_trailer = rtsp_write_close,
|
.write_trailer = rtsp_write_close,
|
||||||
.flags = AVFMT_NOFILE | AVFMT_GLOBALHEADER,
|
.flags = AVFMT_NOFILE | AVFMT_GLOBALHEADER,
|
||||||
.priv_class = &rtsp_muxer_class,
|
.priv_class = &rtsp_muxer_class,
|
||||||
};
|
};
|
||||||
|
@ -63,7 +63,7 @@ typedef struct URLProtocol {
|
|||||||
/**
|
/**
|
||||||
* Read data from the protocol.
|
* Read data from the protocol.
|
||||||
* If data is immediately available (even less than size), EOF is
|
* If data is immediately available (even less than size), EOF is
|
||||||
* reached or an error occurs (including EINTR), return immediately,
|
* reached or an error occurs (including EINTR), return immediately.
|
||||||
* Otherwise:
|
* Otherwise:
|
||||||
* In non-blocking mode, return AVERROR(EAGAIN) immediately.
|
* In non-blocking mode, return AVERROR(EAGAIN) immediately.
|
||||||
* In blocking mode, wait for data/EOF/error with a short timeout (0.1s),
|
* In blocking mode, wait for data/EOF/error with a short timeout (0.1s),
|
||||||
|
@ -532,7 +532,7 @@ static int init_input(AVFormatContext *s, const char *filename, AVDictionary **o
|
|||||||
if (s->pb) {
|
if (s->pb) {
|
||||||
s->flags |= AVFMT_FLAG_CUSTOM_IO;
|
s->flags |= AVFMT_FLAG_CUSTOM_IO;
|
||||||
if (!s->iformat)
|
if (!s->iformat)
|
||||||
return av_probe_input_buffer(s->pb, &s->iformat, filename, s, 0, 0);
|
return av_probe_input_buffer(s->pb, &s->iformat, filename, s, 0, s->probesize);
|
||||||
else if (s->iformat->flags & AVFMT_NOFILE)
|
else if (s->iformat->flags & AVFMT_NOFILE)
|
||||||
av_log(s, AV_LOG_WARNING, "Custom AVIOContext makes no sense and "
|
av_log(s, AV_LOG_WARNING, "Custom AVIOContext makes no sense and "
|
||||||
"will be ignored with AVFMT_NOFILE format.\n");
|
"will be ignored with AVFMT_NOFILE format.\n");
|
||||||
@ -548,7 +548,7 @@ static int init_input(AVFormatContext *s, const char *filename, AVDictionary **o
|
|||||||
return ret;
|
return ret;
|
||||||
if (s->iformat)
|
if (s->iformat)
|
||||||
return 0;
|
return 0;
|
||||||
return av_probe_input_buffer(s->pb, &s->iformat, filename, s, 0, 0);
|
return av_probe_input_buffer(s->pb, &s->iformat, filename, s, 0, s->probesize);
|
||||||
}
|
}
|
||||||
|
|
||||||
static AVPacket *add_to_pktbuf(AVPacketList **packet_buffer, AVPacket *pkt,
|
static AVPacket *add_to_pktbuf(AVPacketList **packet_buffer, AVPacket *pkt,
|
||||||
|
@ -99,7 +99,7 @@ av_dict_get(AVDictionary *m, const char *key, const AVDictionaryEntry *prev, int
|
|||||||
* a dictionary struct is allocated and put in *pm.
|
* a dictionary struct is allocated and put in *pm.
|
||||||
* @param key entry key to add to *pm (will be av_strduped depending on flags)
|
* @param key entry key to add to *pm (will be av_strduped depending on flags)
|
||||||
* @param value entry value to add to *pm (will be av_strduped depending on flags).
|
* @param value entry value to add to *pm (will be av_strduped depending on flags).
|
||||||
* Passing a NULL value will cause an existing tag to be deleted.
|
* Passing a NULL value will cause an existing entry to be deleted.
|
||||||
* @return >= 0 on success otherwise an error code <0
|
* @return >= 0 on success otherwise an error code <0
|
||||||
*/
|
*/
|
||||||
int av_dict_set(AVDictionary **pm, const char *key, const char *value, int flags);
|
int av_dict_set(AVDictionary **pm, const char *key, const char *value, int flags);
|
||||||
|
@ -1 +1 @@
|
|||||||
bb952ae86c72d461aef7583685ec0a4d
|
62fbe4db4a49cb044f57f92cce9993c5
|
||||||
|
@ -1,220 +1,220 @@
|
|||||||
#tb 0: 1/15
|
#tb 0: 1/15
|
||||||
#tb 1: 1/44100
|
#tb 1: 1/44100
|
||||||
0, 0, 0, 1, 161280, 0x677c9fb3
|
0, 0, 0, 1, 161280, 0x677c9fb3
|
||||||
1, 0, 0, 2709, 10836, 0x2a531236
|
1, 0, 0, 2708, 10832, 0xe1a811fa
|
||||||
1, 2709, 2709, 2709, 10836, 0xc58f45af
|
1, 2708, 2708, 2708, 10832, 0xb47841f9
|
||||||
0, 1, 1, 1, 161280, 0xaa280e0a
|
0, 1, 1, 1, 161280, 0xaa280e0a
|
||||||
1, 5418, 5418, 2709, 10836, 0x436cf135
|
1, 5416, 5416, 2708, 10832, 0x839eedf1
|
||||||
0, 2, 2, 1, 161280, 0x8a4d2225
|
0, 2, 2, 1, 161280, 0x8a4d2225
|
||||||
1, 8127, 8127, 2709, 10836, 0x3a6022cc
|
1, 8124, 8124, 2708, 10832, 0xb48b1f60
|
||||||
0, 3, 3, 1, 161280, 0xf10f46a8
|
0, 3, 3, 1, 161280, 0xf10f46a8
|
||||||
1, 10836, 10836, 2709, 10836, 0x57e83a4a
|
1, 10832, 10832, 2708, 10832, 0x743936c0
|
||||||
0, 4, 4, 1, 161280, 0x98d9eab6
|
0, 4, 4, 1, 161280, 0x98d9eab6
|
||||||
1, 13545, 13545, 2709, 10836, 0xca4b3a1b
|
1, 13540, 13540, 2708, 10832, 0xe1f039fb
|
||||||
0, 5, 5, 1, 161280, 0xa543ae1e
|
0, 5, 5, 1, 161280, 0xa543ae1e
|
||||||
1, 16254, 16254, 2709, 10836, 0xc3da7536
|
1, 16248, 16248, 2708, 10832, 0xef00751a
|
||||||
0, 6, 6, 1, 161280, 0x79d717ae
|
0, 6, 6, 1, 161280, 0x79d717ae
|
||||||
1, 18963, 18963, 2709, 10836, 0x8c57d47b
|
1, 18956, 18956, 2708, 10832, 0x401ed099
|
||||||
0, 7, 7, 1, 161280, 0x1a87e2cb
|
0, 7, 7, 1, 161280, 0x1a87e2cb
|
||||||
1, 21672, 21672, 2709, 10836, 0x9a79572b
|
1, 21664, 21664, 2708, 10832, 0x432a53bd
|
||||||
0, 8, 8, 1, 161280, 0xe5c000ac
|
0, 8, 8, 1, 161280, 0xe5c000ac
|
||||||
1, 24381, 24381, 2709, 10836, 0x7dbd6fd3
|
1, 24372, 24372, 2708, 10832, 0xc4276bfd
|
||||||
0, 9, 9, 1, 161280, 0xa5827077
|
0, 9, 9, 1, 161280, 0xa5827077
|
||||||
1, 27090, 27090, 2709, 10836, 0x4454fdde
|
1, 27080, 27080, 2708, 10832, 0x51f0fa8c
|
||||||
0, 10, 10, 1, 161280, 0xfd0615ee
|
0, 10, 10, 1, 161280, 0xfd0615ee
|
||||||
1, 29799, 29799, 2709, 10836, 0x68aae686
|
1, 29788, 29788, 2708, 10832, 0xcebae622
|
||||||
0, 11, 11, 1, 161280, 0xc6fdc861
|
0, 11, 11, 1, 161280, 0xc6fdc861
|
||||||
1, 32508, 32508, 2709, 10836, 0x61f2df35
|
1, 32496, 32496, 2708, 10832, 0xe9f6dc1f
|
||||||
1, 35217, 35217, 2709, 10836, 0xe36883c6
|
1, 35204, 35204, 2708, 10832, 0xda087fee
|
||||||
0, 12, 12, 1, 161280, 0xaa007c7e
|
0, 12, 12, 1, 161280, 0xaa007c7e
|
||||||
1, 37926, 37926, 2709, 10836, 0xefa62217
|
1, 37912, 37912, 2708, 10832, 0x67a621bb
|
||||||
0, 13, 13, 1, 161280, 0xf15e3a96
|
0, 13, 13, 1, 161280, 0xf15e3a96
|
||||||
1, 40635, 40635, 2709, 10836, 0x63b92479
|
1, 40620, 40620, 2708, 10832, 0xd7be207f
|
||||||
0, 14, 14, 1, 161280, 0xce827ae1
|
0, 14, 14, 1, 161280, 0xce827ae1
|
||||||
1, 43344, 43344, 2709, 10836, 0xaf452579
|
1, 43328, 43328, 2708, 10832, 0x19d32507
|
||||||
0, 15, 15, 1, 161280, 0xf379fc13
|
0, 15, 15, 1, 161280, 0xf379fc13
|
||||||
1, 46053, 46053, 2709, 10836, 0xdbb10001
|
1, 46036, 46036, 2708, 10832, 0xe1a3fbfa
|
||||||
0, 16, 16, 1, 161280, 0x89686a0c
|
0, 16, 16, 1, 161280, 0x89686a0c
|
||||||
1, 48762, 48762, 2709, 10836, 0xafb7f7a7
|
1, 48744, 48744, 2708, 10832, 0xd10df779
|
||||||
0, 17, 17, 1, 161280, 0x7e8342bd
|
0, 17, 17, 1, 161280, 0x7e8342bd
|
||||||
1, 51471, 51471, 2709, 10836, 0xd4b1e591
|
1, 51452, 51452, 2708, 10832, 0x4428e1a7
|
||||||
0, 18, 18, 1, 161280, 0x640dab86
|
0, 18, 18, 1, 161280, 0x640dab86
|
||||||
1, 54180, 54180, 2709, 10836, 0x4d44b3bb
|
1, 54160, 54160, 2708, 10832, 0x7ea9b33d
|
||||||
0, 19, 19, 1, 161280, 0xc6a86456
|
0, 19, 19, 1, 161280, 0xc6a86456
|
||||||
1, 56889, 56889, 2709, 10836, 0xff2ea5b3
|
1, 56868, 56868, 2708, 10832, 0x6852a5a5
|
||||||
0, 20, 20, 1, 161280, 0xe360b538
|
0, 20, 20, 1, 161280, 0xe360b538
|
||||||
1, 59598, 59598, 2709, 10836, 0x214e88ad
|
1, 59576, 59576, 2708, 10832, 0xfeb78863
|
||||||
0, 21, 21, 1, 161280, 0xbcc21064
|
0, 21, 21, 1, 161280, 0xbcc21064
|
||||||
1, 62307, 62307, 2709, 10836, 0xde8bfc9a
|
1, 62284, 62284, 2708, 10832, 0xf157f928
|
||||||
0, 22, 22, 1, 161280, 0x95bc4e63
|
0, 22, 22, 1, 161280, 0x95bc4e63
|
||||||
1, 65016, 65016, 2709, 10836, 0xb3cc4b6a
|
1, 64992, 64992, 2708, 10832, 0x86414b3e
|
||||||
0, 23, 23, 1, 161280, 0x390fa1bd
|
0, 23, 23, 1, 161280, 0x390fa1bd
|
||||||
1, 67725, 67725, 2709, 10836, 0x670bce40
|
1, 67700, 67700, 2708, 10832, 0x2e28cdf6
|
||||||
1, 70434, 70434, 2709, 10836, 0xc17d31b2
|
1, 70408, 70408, 2708, 10832, 0x00212e44
|
||||||
0, 24, 24, 1, 161280, 0xa35b3bb9
|
0, 24, 24, 1, 161280, 0xa35b3bb9
|
||||||
1, 73143, 73143, 2709, 10836, 0x7bcb9392
|
1, 73116, 73116, 2708, 10832, 0x2d7f9378
|
||||||
0, 25, 25, 1, 161280, 0x730b0779
|
0, 25, 25, 1, 161280, 0x730b0779
|
||||||
1, 75852, 75852, 2709, 10836, 0x230e28c9
|
1, 75824, 75824, 2708, 10832, 0x84cb25d7
|
||||||
0, 26, 26, 1, 161280, 0xf3c3a3eb
|
0, 26, 26, 1, 161280, 0xf3c3a3eb
|
||||||
1, 78561, 78561, 2709, 10836, 0x42df4204
|
1, 78532, 78532, 2708, 10832, 0x3aca41fa
|
||||||
0, 27, 27, 1, 161280, 0x676ecbaa
|
0, 27, 27, 1, 161280, 0x676ecbaa
|
||||||
1, 81270, 81270, 2709, 10836, 0xfa9134b9
|
1, 81240, 81240, 2708, 10832, 0x27ad34b9
|
||||||
0, 28, 28, 1, 161280, 0x06c4a4e5
|
0, 28, 28, 1, 161280, 0x06c4a4e5
|
||||||
1, 83979, 83979, 2709, 10836, 0x418c1844
|
1, 83948, 83948, 2708, 10832, 0xe665144a
|
||||||
0, 29, 29, 1, 161280, 0x177d26d9
|
0, 29, 29, 1, 161280, 0x177d26d9
|
||||||
1, 86688, 86688, 2709, 10836, 0x93ba66b6
|
1, 86656, 86656, 2708, 10832, 0xf9546626
|
||||||
0, 30, 30, 1, 161280, 0xdaf69ebe
|
0, 30, 30, 1, 161280, 0xdaf69ebe
|
||||||
1, 89397, 89397, 2709, 10836, 0x264a4ffa
|
1, 89364, 89364, 2708, 10832, 0xe71c4f22
|
||||||
0, 31, 31, 1, 161280, 0xabadc296
|
0, 31, 31, 1, 161280, 0xabadc296
|
||||||
1, 92106, 92106, 2709, 10836, 0x82c78a8e
|
1, 92072, 92072, 2708, 10832, 0x5e61869c
|
||||||
0, 32, 32, 1, 161280, 0xec144665
|
0, 32, 32, 1, 161280, 0xec144665
|
||||||
1, 94815, 94815, 2709, 10836, 0x10d22fdc
|
1, 94780, 94780, 2708, 10832, 0x571d2c10
|
||||||
0, 33, 33, 1, 161280, 0x6785aa48
|
0, 33, 33, 1, 161280, 0x6785aa48
|
||||||
1, 97524, 97524, 2709, 10836, 0x2d25906b
|
1, 97488, 97488, 2708, 10832, 0xf0e08cd5
|
||||||
0, 34, 34, 1, 161280, 0x2a0cfcaf
|
0, 34, 34, 1, 161280, 0x2a0cfcaf
|
||||||
1, 100233, 100233, 2709, 10836, 0xa8a111fb
|
1, 100196, 100196, 2708, 10832, 0x66650e49
|
||||||
0, 35, 35, 1, 161280, 0x9288d513
|
0, 35, 35, 1, 161280, 0x9288d513
|
||||||
1, 102942, 102942, 2709, 10836, 0xbd95df87
|
1, 102904, 102904, 2708, 10832, 0x4024deaf
|
||||||
1, 105651, 105651, 2709, 10836, 0x500ddec0
|
1, 105612, 105612, 2708, 10832, 0xda7bdb14
|
||||||
0, 36, 36, 1, 161280, 0x1d295ad0
|
0, 36, 36, 1, 161280, 0x1d295ad0
|
||||||
1, 108360, 108360, 2709, 10836, 0x95d9350b
|
1, 108320, 108320, 2708, 10832, 0xc27a342f
|
||||||
0, 37, 37, 1, 161280, 0xb9fd8406
|
0, 37, 37, 1, 161280, 0xb9fd8406
|
||||||
1, 111069, 111069, 2709, 10836, 0xfa54ea1f
|
1, 111028, 111028, 2708, 10832, 0x574fe679
|
||||||
0, 38, 38, 1, 161280, 0x98bced49
|
0, 38, 38, 1, 161280, 0x98bced49
|
||||||
1, 113778, 113778, 2709, 10836, 0x51b2467e
|
1, 113736, 113736, 2708, 10832, 0x37db464e
|
||||||
0, 39, 39, 1, 161280, 0x42e6fbae
|
0, 39, 39, 1, 161280, 0x42e6fbae
|
||||||
1, 116487, 116487, 2709, 10836, 0x5d772af9
|
1, 116444, 116444, 2708, 10832, 0xb1fa2a83
|
||||||
0, 40, 40, 1, 161280, 0xfd218209
|
0, 40, 40, 1, 161280, 0xfd218209
|
||||||
1, 119196, 119196, 2709, 10836, 0xae25dd8d
|
1, 119152, 119152, 2708, 10832, 0x3d98d9b7
|
||||||
0, 41, 41, 1, 161280, 0x21c2ef31
|
0, 41, 41, 1, 161280, 0x21c2ef31
|
||||||
1, 121905, 121905, 2709, 10836, 0xe4bd0cb0
|
1, 121860, 121860, 2708, 10832, 0xb7c908e2
|
||||||
0, 42, 42, 1, 161280, 0xce4be932
|
0, 42, 42, 1, 161280, 0xce4be932
|
||||||
1, 124614, 124614, 2709, 10836, 0xb33544f0
|
1, 124568, 124568, 2708, 10832, 0x9f7e44d8
|
||||||
0, 43, 43, 1, 161280, 0xd5c0d5fc
|
0, 43, 43, 1, 161280, 0xd5c0d5fc
|
||||||
1, 127323, 127323, 2709, 10836, 0xd5658b12
|
1, 127276, 127276, 2708, 10832, 0xae9b8774
|
||||||
0, 44, 44, 1, 161280, 0xf8d13076
|
0, 44, 44, 1, 161280, 0xf8d13076
|
||||||
1, 130032, 130032, 2709, 10836, 0xeff66e5d
|
1, 129984, 129984, 2708, 10832, 0x36916e3f
|
||||||
0, 45, 45, 1, 161280, 0xdbf86007
|
0, 45, 45, 1, 161280, 0xdbf86007
|
||||||
1, 132741, 132741, 2709, 10836, 0xb1fff6c5
|
1, 132692, 132692, 2708, 10832, 0xd785f5ef
|
||||||
0, 46, 46, 1, 161280, 0x9475a651
|
0, 46, 46, 1, 161280, 0x9475a651
|
||||||
1, 135450, 135450, 2709, 10836, 0x84db56b5
|
1, 135400, 135400, 2708, 10832, 0x2a3a5673
|
||||||
1, 138159, 138159, 2709, 10836, 0x0230e3c9
|
1, 138108, 138108, 2708, 10832, 0x7320e379
|
||||||
0, 47, 47, 1, 161280, 0x41bf1542
|
0, 47, 47, 1, 161280, 0x41bf1542
|
||||||
1, 140868, 140868, 2709, 10836, 0xe58a7faf
|
1, 140816, 140816, 2708, 10832, 0xec787be5
|
||||||
0, 48, 48, 1, 161280, 0x6945297f
|
0, 48, 48, 1, 161280, 0x6945297f
|
||||||
1, 143577, 143577, 2709, 10836, 0xc4003e2a
|
1, 143524, 143524, 2708, 10832, 0xd0d13aa0
|
||||||
0, 49, 49, 1, 161280, 0x2282025e
|
0, 49, 49, 1, 161280, 0x2282025e
|
||||||
1, 146286, 146286, 2709, 10836, 0x6360cbbf
|
1, 146232, 146232, 2708, 10832, 0x34dfcb17
|
||||||
0, 50, 50, 1, 161280, 0x55aace0c
|
0, 50, 50, 1, 161280, 0x55aace0c
|
||||||
1, 148995, 148995, 2709, 10836, 0xc29c2a05
|
1, 148940, 148940, 2708, 10832, 0x1a9c29f1
|
||||||
0, 51, 51, 1, 161280, 0xc78aa51c
|
0, 51, 51, 1, 161280, 0xc78aa51c
|
||||||
1, 151704, 151704, 2709, 10836, 0xb294dd11
|
1, 151648, 151648, 2708, 10832, 0x3e73dcc1
|
||||||
0, 52, 52, 1, 161280, 0xb4b84e6c
|
0, 52, 52, 1, 161280, 0xb4b84e6c
|
||||||
1, 154413, 154413, 2709, 10836, 0x4388b43b
|
1, 154356, 154356, 2708, 10832, 0x7855b053
|
||||||
0, 53, 53, 1, 161280, 0x3bbb3e44
|
0, 53, 53, 1, 161280, 0x3bbb3e44
|
||||||
1, 157122, 157122, 2709, 10836, 0xdd7be367
|
1, 157064, 157064, 2708, 10832, 0x5588df8f
|
||||||
0, 54, 54, 1, 161280, 0x4dd89d80
|
0, 54, 54, 1, 161280, 0x4dd89d80
|
||||||
1, 159831, 159831, 2709, 10836, 0xb9f612a9
|
1, 159772, 159772, 2708, 10832, 0x6f621299
|
||||||
0, 55, 55, 1, 161280, 0xa446a5c5
|
0, 55, 55, 1, 161280, 0xa446a5c5
|
||||||
1, 162540, 162540, 2709, 10836, 0xb64a39fe
|
1, 162480, 162480, 2708, 10832, 0xce7f39c2
|
||||||
0, 56, 56, 1, 161280, 0x8f56b1d6
|
0, 56, 56, 1, 161280, 0x8f56b1d6
|
||||||
1, 165249, 165249, 2709, 10836, 0x6eba6594
|
1, 165188, 165188, 2708, 10832, 0xd88e6552
|
||||||
0, 57, 57, 1, 161280, 0xa170df87
|
0, 57, 57, 1, 161280, 0xa170df87
|
||||||
1, 167958, 167958, 2709, 10836, 0xb4af35c1
|
1, 167896, 167896, 2708, 10832, 0xddc63597
|
||||||
0, 58, 58, 1, 161280, 0x4740a4df
|
0, 58, 58, 1, 161280, 0x4740a4df
|
||||||
1, 170667, 170667, 2709, 10836, 0x4e581c49
|
1, 170604, 170604, 2708, 10832, 0xe3071865
|
||||||
1, 173376, 173376, 2709, 10836, 0xb062a19f
|
1, 173312, 173312, 2708, 10832, 0x2a44a123
|
||||||
0, 59, 59, 1, 161280, 0x86608ee7
|
0, 59, 59, 1, 161280, 0x86608ee7
|
||||||
1, 176085, 176085, 2709, 10836, 0x87cd6135
|
1, 176020, 176020, 2708, 10832, 0x08d85d45
|
||||||
0, 60, 60, 1, 161280, 0x629b4543
|
0, 60, 60, 1, 161280, 0x629b4543
|
||||||
1, 178794, 178794, 2709, 10836, 0x37bffbd6
|
1, 178728, 178728, 2708, 10832, 0x4dc5f83a
|
||||||
0, 61, 61, 1, 161280, 0x697fb952
|
0, 61, 61, 1, 161280, 0x697fb952
|
||||||
1, 181503, 181503, 2709, 10836, 0x6c797900
|
1, 181436, 181436, 2708, 10832, 0x89497812
|
||||||
0, 62, 62, 1, 161280, 0x98e84a51
|
0, 62, 62, 1, 161280, 0x98e84a51
|
||||||
1, 184212, 184212, 2709, 10836, 0x1615df36
|
1, 184144, 184144, 2708, 10832, 0x9ee1db54
|
||||||
0, 63, 63, 1, 161280, 0x97949a90
|
0, 63, 63, 1, 161280, 0x97949a90
|
||||||
1, 186921, 186921, 2709, 10836, 0xb472d9e9
|
1, 186852, 186852, 2708, 10832, 0x5277d611
|
||||||
0, 64, 64, 1, 161280, 0x6a8c9b96
|
0, 64, 64, 1, 161280, 0x6a8c9b96
|
||||||
1, 189630, 189630, 2709, 10836, 0xdfff626e
|
1, 189560, 189560, 2708, 10832, 0x570a619c
|
||||||
0, 65, 65, 1, 161280, 0xafa714ab
|
0, 65, 65, 1, 161280, 0xafa714ab
|
||||||
1, 192339, 192339, 2709, 10836, 0xffa6d771
|
1, 192268, 192268, 2708, 10832, 0xa217d70f
|
||||||
0, 66, 66, 1, 161280, 0x0cf39314
|
0, 66, 66, 1, 161280, 0x0cf39314
|
||||||
1, 195048, 195048, 2709, 10836, 0xa7f3cf96
|
1, 194976, 194976, 2708, 10832, 0x6f0ecbf4
|
||||||
0, 67, 67, 1, 161280, 0x9ccc8171
|
0, 67, 67, 1, 161280, 0x9ccc8171
|
||||||
1, 197757, 197757, 2709, 10836, 0xf556b50a
|
1, 197684, 197684, 2708, 10832, 0x2704b114
|
||||||
0, 68, 68, 1, 161280, 0x8232d5a8
|
0, 68, 68, 1, 161280, 0x8232d5a8
|
||||||
1, 200466, 200466, 2709, 10836, 0x99b86b39
|
1, 200392, 200392, 2708, 10832, 0xf24e679f
|
||||||
0, 69, 69, 1, 161280, 0x250dd5cb
|
0, 69, 69, 1, 161280, 0x250dd5cb
|
||||||
1, 203175, 203175, 2709, 10836, 0x886920d3
|
1, 203100, 203100, 2708, 10832, 0x05572099
|
||||||
0, 70, 70, 1, 161280, 0xf764e43a
|
0, 70, 70, 1, 161280, 0xf764e43a
|
||||||
1, 205884, 205884, 2709, 10836, 0xefb0305a
|
1, 205808, 205808, 2708, 10832, 0x33942d0c
|
||||||
1, 208593, 208593, 2709, 10836, 0x4ab7aa32
|
1, 208516, 208516, 2708, 10832, 0xa77ea674
|
||||||
0, 71, 71, 1, 161280, 0x2f4bec00
|
0, 71, 71, 1, 161280, 0x2f4bec00
|
||||||
1, 211302, 211302, 2709, 10836, 0x7f106530
|
1, 211224, 211224, 2708, 10832, 0xeba663bc
|
||||||
0, 72, 72, 1, 161280, 0x76f1598b
|
0, 72, 72, 1, 161280, 0x76f1598b
|
||||||
1, 214011, 214011, 2709, 10836, 0x6461559a
|
1, 213932, 213932, 2708, 10832, 0x1338524a
|
||||||
0, 73, 73, 1, 161280, 0xa91b84da
|
0, 73, 73, 1, 161280, 0xa91b84da
|
||||||
1, 216720, 216720, 2709, 10836, 0x25e3b12b
|
1, 216640, 216640, 2708, 10832, 0x6182b0b3
|
||||||
0, 74, 74, 1, 161280, 0x011a77fb
|
0, 74, 74, 1, 161280, 0x011a77fb
|
||||||
1, 219429, 219429, 2709, 10836, 0x32cfa3ba
|
1, 219348, 219348, 2708, 10832, 0xa410a364
|
||||||
0, 75, 75, 1, 161280, 0xdbf5341c
|
0, 75, 75, 1, 161280, 0xdbf5341c
|
||||||
1, 222138, 222138, 2709, 10836, 0x0bff78a4
|
1, 222056, 222056, 2708, 10832, 0x2f4374b0
|
||||||
0, 76, 76, 1, 161280, 0x40d5abfa
|
0, 76, 76, 1, 161280, 0x40d5abfa
|
||||||
1, 224847, 224847, 2709, 10836, 0xe4323d53
|
1, 224764, 224764, 2708, 10832, 0xf41f3a07
|
||||||
0, 77, 77, 1, 161280, 0x9fb8360c
|
0, 77, 77, 1, 161280, 0x9fb8360c
|
||||||
1, 227556, 227556, 2709, 10836, 0x70b35196
|
1, 227472, 227472, 2708, 10832, 0x2b1c50c6
|
||||||
0, 78, 78, 1, 161280, 0xabc5fba8
|
0, 78, 78, 1, 161280, 0xabc5fba8
|
||||||
1, 230265, 230265, 2709, 10836, 0xf2b8b07f
|
1, 230180, 230180, 2708, 10832, 0x3692ac89
|
||||||
0, 79, 79, 1, 161280, 0x98090909
|
0, 79, 79, 1, 161280, 0x98090909
|
||||||
1, 232974, 232974, 2709, 10836, 0x826cc972
|
1, 232888, 232888, 2708, 10832, 0x5d6bc87e
|
||||||
0, 80, 80, 1, 161280, 0x9a3613bd
|
0, 80, 80, 1, 161280, 0x9a3613bd
|
||||||
1, 235683, 235683, 2709, 10836, 0x8a0fdce8
|
1, 235596, 235596, 2708, 10832, 0x1b1cda0c
|
||||||
0, 81, 81, 1, 161280, 0x9071024f
|
0, 81, 81, 1, 161280, 0x9071024f
|
||||||
1, 238392, 238392, 2709, 10836, 0xa072a503
|
1, 238304, 238304, 2708, 10832, 0x11eaa15f
|
||||||
|
1, 241012, 241012, 2708, 10832, 0x73c7d7ef
|
||||||
0, 82, 82, 1, 161280, 0x4df39487
|
0, 82, 82, 1, 161280, 0x4df39487
|
||||||
1, 241101, 241101, 2709, 10836, 0xd698d8e7
|
1, 243720, 243720, 2708, 10832, 0x65d7e3be
|
||||||
1, 243810, 243810, 2709, 10836, 0xfe80e794
|
|
||||||
0, 83, 83, 1, 161280, 0x17658524
|
0, 83, 83, 1, 161280, 0x17658524
|
||||||
1, 246519, 246519, 2709, 10836, 0xdd580a5a
|
1, 246428, 246428, 2708, 10832, 0xb9c00688
|
||||||
0, 84, 84, 1, 161280, 0xbcd794df
|
0, 84, 84, 1, 161280, 0xbcd794df
|
||||||
1, 249228, 249228, 2709, 10836, 0x121bc1bb
|
1, 249136, 249136, 2708, 10832, 0x0b98c125
|
||||||
0, 85, 85, 1, 161280, 0x2a14ae05
|
0, 85, 85, 1, 161280, 0x2a14ae05
|
||||||
1, 251937, 251937, 2709, 10836, 0x8cebd7d9
|
1, 251844, 251844, 2708, 10832, 0x331ed413
|
||||||
0, 86, 86, 1, 161280, 0x664feab2
|
0, 86, 86, 1, 161280, 0x664feab2
|
||||||
1, 254646, 254646, 2709, 10836, 0x6eaef4d7
|
1, 254552, 254552, 2708, 10832, 0x9b68f485
|
||||||
0, 87, 87, 1, 161280, 0xf6b721f4
|
0, 87, 87, 1, 161280, 0xf6b721f4
|
||||||
1, 257355, 257355, 2709, 10836, 0x8f0b5d0b
|
1, 257260, 257260, 2708, 10832, 0x1b865c55
|
||||||
0, 88, 88, 1, 161280, 0xfec565f3
|
0, 88, 88, 1, 161280, 0xfec565f3
|
||||||
1, 260064, 260064, 2709, 10836, 0x40ccf61f
|
1, 259968, 259968, 2708, 10832, 0x68cef565
|
||||||
0, 89, 89, 1, 161280, 0xd39aabee
|
0, 89, 89, 1, 161280, 0xd39aabee
|
||||||
1, 262773, 262773, 2709, 10836, 0xb6db5f1d
|
1, 262676, 262676, 2708, 10832, 0x3a605f15
|
||||||
0, 90, 90, 1, 161280, 0x1f3d5de7
|
0, 90, 90, 1, 161280, 0x1f3d5de7
|
||||||
1, 265482, 265482, 2709, 10836, 0xa089f250
|
1, 265384, 265384, 2708, 10832, 0xd72ff22e
|
||||||
0, 91, 91, 1, 161280, 0xaf97f50c
|
0, 91, 91, 1, 161280, 0xaf97f50c
|
||||||
1, 268191, 268191, 2709, 10836, 0xd3512f2b
|
1, 268092, 268092, 2708, 10832, 0x1c672b67
|
||||||
0, 92, 92, 1, 161280, 0xe34b6b6a
|
0, 92, 92, 1, 161280, 0xe34b6b6a
|
||||||
1, 270900, 270900, 2709, 10836, 0xfa127f74
|
1, 270800, 270800, 2708, 10832, 0xfd1a7e7e
|
||||||
0, 93, 93, 1, 161280, 0x4117371e
|
0, 93, 93, 1, 161280, 0x4117371e
|
||||||
1, 273609, 273609, 2709, 10836, 0xd6a60ead
|
1, 273508, 273508, 2708, 10832, 0x9bf20ead
|
||||||
1, 276318, 276318, 2709, 10836, 0x00000000
|
1, 276216, 276216, 2708, 10832, 0x00000000
|
||||||
0, 94, 94, 1, 161280, 0x4117371e
|
0, 94, 94, 1, 161280, 0x4117371e
|
||||||
1, 279027, 279027, 2709, 10836, 0x00000000
|
1, 278924, 278924, 2708, 10832, 0x00000000
|
||||||
0, 95, 95, 1, 161280, 0xe555b55e
|
0, 95, 95, 1, 161280, 0xe555b55e
|
||||||
1, 281736, 281736, 2709, 10836, 0x00000000
|
1, 281632, 281632, 2708, 10832, 0x00000000
|
||||||
0, 96, 96, 1, 161280, 0xe555b55e
|
0, 96, 96, 1, 161280, 0xe555b55e
|
||||||
1, 284445, 284445, 2709, 10836, 0x00000000
|
1, 284340, 284340, 2708, 10832, 0x00000000
|
||||||
0, 97, 97, 1, 161280, 0xe555b55e
|
0, 97, 97, 1, 161280, 0xe555b55e
|
||||||
1, 287154, 287154, 2709, 10836, 0x00000000
|
1, 287048, 287048, 2708, 10832, 0x00000000
|
||||||
0, 98, 98, 1, 161280, 0xe555b55e
|
0, 98, 98, 1, 161280, 0xe555b55e
|
||||||
1, 289863, 289863, 2709, 10836, 0x00000000
|
1, 289756, 289756, 2708, 10832, 0x00000000
|
||||||
0, 99, 99, 1, 161280, 0xe555b55e
|
0, 99, 99, 1, 161280, 0xe555b55e
|
||||||
1, 292572, 292572, 2709, 10836, 0x00000000
|
1, 292464, 292464, 2708, 10832, 0x00000000
|
||||||
0, 100, 100, 1, 161280, 0xe555b55e
|
0, 100, 100, 1, 161280, 0xe555b55e
|
||||||
1, 295281, 295281, 2709, 10836, 0x00000000
|
1, 295172, 295172, 2708, 10832, 0x00000000
|
||||||
0, 101, 101, 1, 161280, 0xe555b55e
|
0, 101, 101, 1, 161280, 0xe555b55e
|
||||||
1, 297990, 297990, 2709, 10836, 0x00000000
|
1, 297880, 297880, 2708, 10832, 0x00000000
|
||||||
0, 102, 102, 1, 161280, 0xe555b55e
|
0, 102, 102, 1, 161280, 0xe555b55e
|
||||||
1, 300699, 300699, 2709, 10836, 0x00000000
|
1, 300588, 300588, 2708, 10832, 0x00000000
|
||||||
0, 103, 103, 1, 161280, 0xe555b55e
|
0, 103, 103, 1, 161280, 0xe555b55e
|
||||||
1, 303408, 303408, 2709, 10836, 0x00000000
|
1, 303296, 303296, 2708, 10832, 0x00000000
|
||||||
0, 104, 104, 1, 161280, 0xe555b55e
|
0, 104, 104, 1, 161280, 0xe555b55e
|
||||||
|
@ -1,46 +1,46 @@
|
|||||||
#tb 0: 1/15
|
#tb 0: 1/15
|
||||||
#tb 1: 1/44100
|
#tb 1: 1/44100
|
||||||
0, 0, 0, 1, 69120, 0x68beb30f
|
0, 0, 0, 1, 69120, 0x68beb30f
|
||||||
1, 0, 0, 2709, 10836, 0xedecb6a7
|
1, 0, 0, 2708, 10832, 0x1597b4c8
|
||||||
1, 2709, 2709, 2709, 10836, 0x8098a323
|
1, 2708, 2708, 2708, 10832, 0xf9479f8b
|
||||||
0, 1, 1, 1, 69120, 0x3976f5cf
|
0, 1, 1, 1, 69120, 0x3976f5cf
|
||||||
1, 5418, 5418, 2709, 10836, 0xcfa1112e
|
1, 5416, 5416, 2708, 10832, 0x8db50e74
|
||||||
0, 2, 2, 1, 69120, 0xf815bc3c
|
0, 2, 2, 1, 69120, 0xf815bc3c
|
||||||
1, 8127, 8127, 2709, 10836, 0xe241ede4
|
1, 8124, 8124, 2708, 10832, 0x2b33ecbb
|
||||||
0, 3, 3, 1, 69120, 0xa7cc0ae6
|
0, 3, 3, 1, 69120, 0xa7cc0ae6
|
||||||
1, 10836, 10836, 2709, 10836, 0xddf254bb
|
1, 10832, 10832, 2708, 10832, 0x8d0f537b
|
||||||
0, 4, 4, 1, 69120, 0xd85ac282
|
0, 4, 4, 1, 69120, 0xd85ac282
|
||||||
1, 13545, 13545, 2709, 10836, 0xa16c8507
|
1, 13540, 13540, 2708, 10832, 0x922081c7
|
||||||
0, 5, 5, 1, 69120, 0xf7fd7edb
|
0, 5, 5, 1, 69120, 0xf7fd7edb
|
||||||
1, 16254, 16254, 2709, 10836, 0xbe211f93
|
1, 16248, 16248, 2708, 10832, 0x40291f19
|
||||||
0, 6, 6, 1, 69120, 0x433bb6f6
|
0, 6, 6, 1, 69120, 0x433bb6f6
|
||||||
1, 18963, 18963, 2709, 10836, 0x26c7283d
|
1, 18956, 18956, 2708, 10832, 0x88f5271a
|
||||||
0, 7, 7, 1, 69120, 0xdbac8bee
|
0, 7, 7, 1, 69120, 0xdbac8bee
|
||||||
1, 21672, 21672, 2709, 10836, 0x4d18be56
|
1, 21664, 21664, 2708, 10832, 0x55c6bbe5
|
||||||
0, 8, 8, 1, 69120, 0x88e2a799
|
0, 8, 8, 1, 69120, 0x88e2a799
|
||||||
1, 24381, 24381, 2709, 10836, 0x57b9af6f
|
1, 24372, 24372, 2708, 10832, 0x9b51ae82
|
||||||
0, 9, 9, 1, 69120, 0x49617b26
|
0, 9, 9, 1, 69120, 0x49617b26
|
||||||
1, 27090, 27090, 2709, 10836, 0xd5864280
|
1, 27080, 27080, 2708, 10832, 0xcdf2409b
|
||||||
0, 10, 10, 1, 69120, 0xeb44ca01
|
0, 10, 10, 1, 69120, 0xeb44ca01
|
||||||
1, 29799, 29799, 2709, 10836, 0xd582b451
|
1, 29788, 29788, 2708, 10832, 0x0933b1a4
|
||||||
0, 11, 11, 1, 69120, 0x6fea37e8
|
0, 11, 11, 1, 69120, 0x6fea37e8
|
||||||
1, 32508, 32508, 2709, 10836, 0xec13731d
|
1, 32496, 32496, 2708, 10832, 0x24b77006
|
||||||
1, 35217, 35217, 2709, 10836, 0xe3d4fbb8
|
1, 35204, 35204, 2708, 10832, 0xf612fa8a
|
||||||
0, 12, 12, 1, 69120, 0xf55d74c7
|
0, 12, 12, 1, 69120, 0xf55d74c7
|
||||||
1, 37926, 37926, 2709, 10836, 0xcbb54d18
|
1, 37912, 37912, 2708, 10832, 0x99884b06
|
||||||
0, 13, 13, 1, 69120, 0xb5082ca7
|
0, 13, 13, 1, 69120, 0xb5082ca7
|
||||||
1, 40635, 40635, 2709, 10836, 0xff7e7133
|
1, 40620, 40620, 2708, 10832, 0x3c746fbe
|
||||||
0, 14, 14, 1, 69120, 0x5876d758
|
0, 14, 14, 1, 69120, 0x5876d758
|
||||||
1, 43344, 43344, 2709, 10836, 0xcc28b1a7
|
1, 43328, 43328, 2708, 10832, 0x05f3b08a
|
||||||
0, 15, 15, 1, 69120, 0x45e7dd5c
|
0, 15, 15, 1, 69120, 0x45e7dd5c
|
||||||
1, 46053, 46053, 2709, 10836, 0xbf9e07a5
|
1, 46036, 46036, 2708, 10832, 0xa6560483
|
||||||
1, 48762, 48762, 2709, 10836, 0x16408f38
|
1, 48744, 48744, 2708, 10832, 0xd98a8e19
|
||||||
1, 51471, 51471, 2709, 10836, 0x2b000c9f
|
1, 51452, 51452, 2708, 10832, 0xf98a0b2e
|
||||||
1, 54180, 54180, 2709, 10836, 0x0ccd9811
|
1, 54160, 54160, 2708, 10832, 0xb1039582
|
||||||
1, 56889, 56889, 2709, 10836, 0xf9575d48
|
1, 56868, 56868, 2708, 10832, 0x85dd5c3f
|
||||||
1, 59598, 59598, 2709, 10836, 0x1ee68190
|
1, 59576, 59576, 2708, 10832, 0x19fc801a
|
||||||
1, 62307, 62307, 2709, 10836, 0xde435373
|
1, 62284, 62284, 2708, 10832, 0x95805089
|
||||||
1, 65016, 65016, 2709, 10836, 0xd83be17a
|
1, 64992, 64992, 2708, 10832, 0x576fdec3
|
||||||
1, 67725, 67725, 2709, 10836, 0x9a7f0bbe
|
1, 67700, 67700, 2708, 10832, 0x704a0905
|
||||||
1, 70434, 70434, 2709, 10836, 0x8709e4d3
|
1, 70408, 70408, 2708, 10832, 0xf87ce1fa
|
||||||
1, 73143, 73143, 2709, 10836, 0xde1879cb
|
1, 73116, 73116, 2708, 10832, 0xfc0076b9
|
||||||
|
Loading…
x
Reference in New Issue
Block a user