26 static jfieldID nativeBuffer_FID = NULL;
    27 static jmethodID rewind_MID = NULL;
    28 static jmethodID limit_MID = NULL;
    29 static jmethodID capacity_MID = NULL;
    30 static jmethodID setNativeBufferCapacity_MID = NULL;
    31 static jmethodID logFine_MID = NULL;
    32 static jmethodID logWarning_MID = NULL;
    33 static int MIN_PROBE_SCORE = 5; 
    41 static void init_ids(JNIEnv *env, jobject stream) {
    42     if (!nativeBuffer_FID || !rewind_MID || !limit_MID) {
    43         jclass bufferClass = NULL;
    44         jclass streamClass = NULL;
    46         bufferClass = (*env)->FindClass(env, 
"java/nio/Buffer");
    47         streamClass = (*env)->GetObjectClass(env, stream);
    49         nativeBuffer_FID = (*env)->GetFieldID(env, streamClass, 
"nativeBuffer", 
"Ljava/nio/ByteBuffer;");
    50         rewind_MID = (*env)->GetMethodID(env, bufferClass, 
"rewind", 
"()Ljava/nio/Buffer;");
    51         limit_MID = (*env)->GetMethodID(env, bufferClass, 
"limit", 
"(I)Ljava/nio/Buffer;");
    52         capacity_MID = (*env)->GetMethodID(env, bufferClass, 
"capacity", 
"()I");
    53         setNativeBufferCapacity_MID = (*env)->GetMethodID(env, streamClass, 
"setNativeBufferCapacity", 
"(I)I");
    54         logFine_MID = (*env)->GetMethodID(env, streamClass, 
"logFine", 
"(Ljava/lang/String;)V");
    55         logWarning_MID = (*env)->GetMethodID(env, streamClass, 
"logWarning", 
"(Ljava/lang/String;)V");
    65 int ff_open_stream(JNIEnv *env, AVStream *stream, AVCodecContext **context) {
    67     fprintf(stderr, 
"Opening stream...\n");
    71     AVCodec *decoder = NULL;
    72     AVDictionary *opts = NULL;
    75     decoder = avcodec_find_decoder(stream->codecpar->codec_id);
    77         fprintf(stderr, 
"Failed to find %s codec\n", av_get_media_type_string(AVMEDIA_TYPE_AUDIO));
    78         res = AVERROR(EINVAL);
    83     *context = avcodec_alloc_context3(decoder);
    85         fprintf(stderr, 
"Failed to allocate context\n");
    86         res = AVERROR(EINVAL);
    92     if ((res = avcodec_parameters_to_context(*context, stream->codecpar)) < 0) {
    93         fprintf(stderr, 
"Failed to copy %s codec parameters to decoder context\n", av_get_media_type_string(AVMEDIA_TYPE_AUDIO));
    99     av_dict_set(&opts, 
"refcounted_frames", refcount ? 
"1" : 
"0", 0);
   100     if ((res = avcodec_open2(*context, decoder, &opts)) < 0) {
   101         fprintf(stderr, 
"Failed to open %s codec\n", av_get_media_type_string(AVMEDIA_TYPE_AUDIO));
   107     fprintf(stderr, 
"Stream was opened.\n");
   122 static int open_codec_context(
int *stream_index,
   123         AVFormatContext *format_context,
   124         AVCodecContext *context,
   125         enum AVMediaType type) {
   129     AVCodec *decoder = NULL;
   131     res = av_find_best_stream(format_context, type, -1, -1, NULL, 0);
   136     stream = format_context->streams[*stream_index];
   139     decoder = avcodec_find_decoder(stream->codecpar->codec_id);
   143     context = avcodec_alloc_context3(decoder);
   148     res = avcodec_open2(context, decoder, NULL);
   164         char formattedMessage [strlen(message)+4+AV_ERROR_MAX_STRING_SIZE];
   165         snprintf(formattedMessage, strlen(message)+4+AV_ERROR_MAX_STRING_SIZE, 
"%s (%.64s)", message, av_err2str(err));
   167         fprintf(stderr, 
"UnsupportedAudioFileException: %s\n", formattedMessage);
   169         jclass excCls = (*env)->FindClass(env, 
"javax/sound/sampled/UnsupportedAudioFileException");
   170         (*env)->ThrowNew(env, excCls, formattedMessage);
   179         char formattedMessage [15];
   180         snprintf(formattedMessage, 15, 
"%d", index);
   182         fprintf(stderr, 
"IndexOutOfBoundsException: %d\n", index);
   184         jclass excCls = (*env)->FindClass(env, 
"java/lang/IndexOutOfBoundsException");
   185         (*env)->ThrowNew(env, excCls, formattedMessage);
   194         char formattedMessage [strlen(message)+4+AV_ERROR_MAX_STRING_SIZE];
   195         snprintf(formattedMessage, strlen(message)+4+AV_ERROR_MAX_STRING_SIZE, 
"%s (%.64s)", message, av_err2str(err));
   197         fprintf(stderr, 
"IOException: %s\n", formattedMessage);
   199         jclass excCls = (*env)->FindClass(env, 
"java/io/IOException");
   200         (*env)->ThrowNew(env, excCls, formattedMessage);
   210         fprintf (stderr, 
"FileNotFoundException: '%s' %d (%4.4s)\n", message, (
int)err, (
char*)&err);
   212         jclass excCls = (*env)->FindClass(env, 
"java/io/FileNotFoundException");
   213         (*env)->ThrowNew(env, excCls, message);
   222         char formattedMessage [strlen(message)+20+AV_ERROR_MAX_STRING_SIZE];
   223         snprintf(formattedMessage, strlen(message)+20+AV_ERROR_MAX_STRING_SIZE, 
"%s %i (%.64s)", message, err, av_err2str(err));
   224         jstring s = (*aio->
env)->NewStringUTF(aio->
env, formattedMessage);
   227         jstring s = (*aio->
env)->NewStringUTF(aio->
env, message);
   237         char formattedMessage [strlen(message)+20+AV_ERROR_MAX_STRING_SIZE];
   238         snprintf(formattedMessage, strlen(message)+20+AV_ERROR_MAX_STRING_SIZE, 
"%s %i (%.64s)", message, err, av_err2str(err));
   239         jstring s = (*aio->
env)->NewStringUTF(aio->
env, formattedMessage);
   242         jstring s = (*aio->
env)->NewStringUTF(aio->
env, message);
   260     res = avformat_open_input(format_context, url, NULL, NULL);
   262         if (res == AVERROR(ENOENT) || res == AVERROR_HTTP_NOT_FOUND) {
   264         } 
else if (res == AVERROR_PROTOCOL_NOT_FOUND
   265                 || res == AVERROR_HTTP_BAD_REQUEST
   266                 || res == AVERROR_HTTP_UNAUTHORIZED
   267                 || res == AVERROR_HTTP_FORBIDDEN
   268                 || res == AVERROR_HTTP_OTHER_4XX
   269                 || res == AVERROR_HTTP_SERVER_ERROR
   270                 || res == AVERROR(EIO)) {
   277     probe_score = (*format_context)->probe_score;
   280         fprintf(stderr, 
"ff_open_format_context(): probe score=%i\n", probe_score);
   283     if (probe_score < MIN_PROBE_SCORE) {
   289     res = avformat_find_stream_info(*format_context, NULL);
   312 int ff_open_file(JNIEnv *env, AVFormatContext **format_context, AVStream **openedStream, AVCodecContext **context, 
int *stream_index, 
const char *url) {
   321     fprintf(stderr, 
"Desired audio stream index: %i.\n", *stream_index);
   324     if (*stream_index < 0) {
   326         res = open_codec_context(stream_index, *format_context, *context, AVMEDIA_TYPE_AUDIO);
   331         *openedStream = (*format_context)->streams[*stream_index];
   336         int audio_stream_number = 0;
   337         AVStream* stream = NULL;
   339         AVFormatContext* deref_format_context = *format_context;
   340         for (i=0; i<deref_format_context->nb_streams; i++) {
   341             stream = deref_format_context->streams[i];
   342             if (stream->codecpar->codec_type == AVMEDIA_TYPE_AUDIO) {
   343                 if (audio_stream_number == *stream_index) {
   346                     fprintf(stderr, 
"Found desired audio stream at index: %i.\n", i);
   350                 audio_stream_number++;
   354         if (stream == NULL) {
   364         *openedStream = stream;
   368     fprintf(stderr, 
"Opened stream index: %i.\n", *stream_index);
   369     fprintf(stderr, 
"Opened stream: %ld.\n", (
long) *openedStream);
   384 static int init_swr(JNIEnv *env, 
FFAudioIO *aio) {
   389         res = AVERROR(ENOMEM);
   394     av_opt_set_sample_fmt(aio->
swr_context, 
"in_sample_fmt",  aio->
stream->codecpar->format, 0);
   396     av_opt_set_sample_fmt(aio->
swr_context, 
"out_sample_fmt", av_get_packed_sample_fmt(aio->
stream->codecpar->format), 0);
   399     av_opt_set_int(aio->
swr_context, 
"in_channel_count",  aio->
stream->codecpar->channels, 0);
   400     av_opt_set_int(aio->
swr_context, 
"out_channel_count",  aio->
stream->codecpar->channels, 0);
   401     av_opt_set_int(aio->
swr_context, 
"in_channel_layout",  aio->
stream->codecpar->channel_layout, 0);
   402     av_opt_set_int(aio->
swr_context, 
"out_channel_layout", aio->
stream->codecpar->channel_layout, 0);
   403     av_opt_set_int(aio->
swr_context, 
"in_sample_rate",     aio->
stream->codecpar->sample_rate, 0);
   404     av_opt_set_int(aio->
swr_context, 
"out_sample_rate",    aio->
stream->codecpar->sample_rate, 0);
   408         res = AVERROR(ENOMEM);
   431 AVCodec* 
ff_find_encoder(
enum AVSampleFormat sampleFormat, 
int bits, 
int big_endian, 
int signedSamples) {
   432     enum AVCodecID codec_id;
   435     fprintf(stderr, 
"ff_find_encoder(fmt=%d,bits=%d,big_endian=%d,signed=%d)\n", sampleFormat, bits, big_endian, signedSamples);
   438     switch (sampleFormat) {
   439         case AV_SAMPLE_FMT_U8:
   440         case AV_SAMPLE_FMT_U8P:
   441             if (signedSamples) codec_id = AV_CODEC_ID_PCM_S8;
   442             else codec_id = AV_CODEC_ID_PCM_U8;
   444         case AV_SAMPLE_FMT_S16:
   445         case AV_SAMPLE_FMT_S16P:
   446             if (signedSamples) codec_id = big_endian ? AV_CODEC_ID_PCM_S16BE : AV_CODEC_ID_PCM_S16LE;
   447             else codec_id = big_endian ? AV_CODEC_ID_PCM_U16BE : AV_CODEC_ID_PCM_U16LE;
   449         case AV_SAMPLE_FMT_S32:
   450         case AV_SAMPLE_FMT_S32P:
   452                 if (signedSamples) codec_id = big_endian ? AV_CODEC_ID_PCM_S24BE : AV_CODEC_ID_PCM_S24LE;
   453                 else codec_id = big_endian ? AV_CODEC_ID_PCM_U24BE : AV_CODEC_ID_PCM_U24LE;
   455                 if (signedSamples) codec_id = big_endian ? AV_CODEC_ID_PCM_S32BE : AV_CODEC_ID_PCM_S32LE;
   456                 else codec_id = big_endian ? AV_CODEC_ID_PCM_U32BE : AV_CODEC_ID_PCM_U32LE;
   459         case AV_SAMPLE_FMT_FLT:
   460         case AV_SAMPLE_FMT_FLTP:
   461             codec_id = big_endian ? AV_CODEC_ID_PCM_F32BE : AV_CODEC_ID_PCM_F32LE;
   463         case AV_SAMPLE_FMT_DBL:
   464         case AV_SAMPLE_FMT_DBLP:
   465             codec_id = big_endian ? AV_CODEC_ID_PCM_F64BE : AV_CODEC_ID_PCM_F64LE;
   471     return avcodec_find_encoder(codec_id);
   486     int64_t out_sample_rate;
   487     int64_t out_channel_count;
   488     int64_t out_channel_layout;
   489     enum AVSampleFormat out_sample_fmt;
   503         res = AVERROR(ENOMEM);
   509     av_opt_get_int(aio->
swr_context, 
"out_channel_count", 0, &out_channel_count);
   510     av_opt_get_int(aio->
swr_context, 
"out_channel_layout", 0, &out_channel_layout);
   511     av_opt_get_int(aio->
swr_context, 
"out_sample_rate", 0, &out_sample_rate);
   512     av_opt_get_sample_fmt(aio->
swr_context, 
"out_sample_fmt", 0, &out_sample_fmt);
   521         res = AVERROR(ENOMEM);
   528         res = AVERROR(ENOMEM);
   552     AVCodec *codec = NULL;
   557     nb_planes = av_sample_fmt_is_planar(aio->
stream->codecpar->format)
   558         ? aio->
stream->codecpar->channels
   562     res = init_swr(env, aio);
   568     if (aio->
stream->codecpar->bits_per_coded_sample == 24) {
   571             res = AVERROR(EINVAL);
   583     aio->
audio_data = av_mallocz(
sizeof(uint8_t *) * nb_planes);
   585         res = AVERROR(ENOMEM);
   592         res = AVERROR(ENOMEM);
   617 static int encode_buffer(
FFAudioIO *aio, 
const uint8_t *in_buf, 
int in_size, 
const uint8_t *out_buf) {
   624     fprintf(stderr, 
"encode_buffer: channels=%d frame->nb_samples=%d in_size=%d\n", aio->
encode_context->channels, aio->
encode_frame->nb_samples, in_size);
   625     fprintf(stderr, 
"encode_buffer: needed buffer=%d available=%d\n", res, in_size);
   670 static int resample(
FFAudioIO *aio,  uint8_t **out_buf, 
int out_samples, 
const uint8_t **in_buf, 
const int in_samples) {
   672     int64_t out_channel_count;
   673     enum AVSampleFormat out_sample_format;
   675     if (out_samples == 0) 
goto bail; 
   677     av_opt_get_int(aio->
swr_context, 
"out_channel_count", 0, &out_channel_count);
   678     av_opt_get_sample_fmt(aio->
swr_context, 
"out_sample_fmt", 0, &out_sample_format);
   681         fprintf(stderr, 
"resample: out_samples=%d in_samples=%d, channels=%d sample_format=%d\n",
   682             out_samples, in_samples, (
int)out_channel_count, out_sample_format);
   686     res = av_samples_alloc(out_buf, NULL, out_channel_count, out_samples, out_sample_format, 1);
   688         res = AVERROR(ENOMEM);
   694     res = swr_convert(aio->
swr_context, out_buf, out_samples, in_buf, in_samples);
   705 static int copy_to_java_buffer(
FFAudioIO *aio, uint32_t offset, 
int samples, uint8_t **resample_buf) {
   707     uint32_t buffer_size = 0;
   708     jobject byte_buffer = NULL;
   709     uint8_t *java_buffer = NULL;
   710     int64_t channel_count;
   711     enum AVSampleFormat format;
   713     av_opt_get_sample_fmt(aio->
swr_context, 
"out_sample_fmt", 0, &format);
   714     av_opt_get_int(aio->
swr_context, 
"out_channel_count", 0, &channel_count);
   716     res = av_samples_get_buffer_size(NULL, (
int)channel_count, samples, format, 1);
   717     if (res < 0) 
goto bail;
   718     else buffer_size = res;
   733     java_buffer = (uint8_t *)(*aio->
env)->GetDirectBufferAddress(aio->
env, byte_buffer) + offset;
   740         res = encode_buffer(aio, resample_buf[0], buffer_size, java_buffer);
   747         memcpy(java_buffer, resample_buf[0], buffer_size);
   753         (*aio->
env)->CallObjectMethod(aio->
env, byte_buffer, rewind_MID);
   755     (*aio->
env)->CallObjectMethod(aio->
env, byte_buffer, limit_MID, offset + buffer_size);
   772 static int decode_packet(
FFAudioIO *aio, 
int cached) {
   774     uint8_t **resample_buf = NULL;
   775     uint32_t java_buffer_offset = 0;
   776     uint32_t out_buf_size = 0;
   777     int out_buf_samples = 0;
   778     int64_t out_sample_rate;
   782     int bytesConsumed = 0;
   786     av_opt_get_int(aio->
swr_context, 
"out_sample_rate", 0, &out_sample_rate);
   788     resample_buf = av_mallocz(
sizeof(uint8_t *) * 1); 
   794             fprintf(stderr, 
"Flushing.\n");
   796             res = resample(aio, resample_buf, swr_get_delay(aio->
swr_context, aio->
stream->codecpar->sample_rate), NULL, 0);
   797             if (res < 0) 
goto bail;
   798             else out_buf_samples = res;
   803             fprintf(stderr, 
"aio->decode_packet.size: %i\n", aio->
decode_packet.size);
   808             if (bytesConsumed < 0) {
   809                 logWarning(aio, bytesConsumed, 
"Skipping packet. avcodec_decode_audio4 failed:");
   817             fprintf(stderr, 
"bytesConsumed: %i\n", bytesConsumed);
   828                 fprintf(stderr, 
"samples%s n:%" PRIu64 
" nb_samples:%d pts:%s\n",
   829                        cached ? 
"(cached)" : 
"",
   836                 out_buf_samples = av_rescale_rnd(
   839                         aio->
stream->codecpar->sample_rate,
   848                     return AVERROR(ENOMEM);
   854                 res = resample(aio, resample_buf, out_buf_samples, (
const uint8_t **)aio->
audio_data, aio->
decode_frame->nb_samples);
   855                 if (res < 0) 
goto bail;
   856                 else out_buf_samples = res;
   860                 fprintf(stderr, 
"Got no frame.\n");
   865         if (out_buf_samples > 0) {
   867             java_buffer_offset += out_buf_size;
   868             res = copy_to_java_buffer(aio, java_buffer_offset, out_buf_samples, resample_buf);
   869             if (res < 0) 
goto bail;
   872         if (resample_buf[0]) av_freep(&resample_buf[0]);
   880         if (resample_buf[0]) av_freep(&resample_buf[0]);
   881         av_free(resample_buf);
   903     while (res == 0 && read_frame >= 0) {
   905         if (read_frame >= 0) {
   906             res = decode_packet(aio, 0);
   908             fprintf(stderr, 
"res       : %i\n", res);
   909             fprintf(stderr, 
"read_frame: %i\n", read_frame);
   910             fprintf(stderr, 
"duration  : %lli\n", aio->
decode_packet.duration);
   911             fprintf(stderr, 
"timestamp : %" PRId64 
"\n", aio->
timestamp);
   912             fprintf(stderr, 
"pts       : %" PRId64 
"\n", aio->
decode_packet.pts);
   913             fprintf(stderr, 
"dts       : %" PRId64 
"\n", aio->
decode_packet.dts);
   918             fprintf(stderr, 
"Reading cached frames: %i\n", aio->
got_frame);
   922             res = decode_packet(aio, 1);
   935         fprintf(stderr, 
"ff_audioio_free\n");
   956             if ((s->iformat && s->iformat->flags & AVFMT_NOFILE) || (s->flags & AVFMT_FLAG_CUSTOM_IO)) {
   984         case AV_CODEC_ID_PCM_S16BE:
   985         case AV_CODEC_ID_PCM_U16BE:
   986         case AV_CODEC_ID_PCM_S32BE:
   987         case AV_CODEC_ID_PCM_U32BE:
   988         case AV_CODEC_ID_PCM_S24BE:
   989         case AV_CODEC_ID_PCM_U24BE:
   990         case AV_CODEC_ID_PCM_F32BE:
   991         case AV_CODEC_ID_PCM_F64BE:
  1003         fprintf(stdout, 
"private final int AV_CODEC_ID_PCM_S16LE = %#x;\n", AV_CODEC_ID_PCM_S16LE);
  1004         fprintf(stdout, 
"private final int AV_CODEC_ID_PCM_S16BE = %#x;\n", AV_CODEC_ID_PCM_S16BE);
  1005         fprintf(stdout, 
"private final int AV_CODEC_ID_PCM_U16LE = %#x;\n", AV_CODEC_ID_PCM_U16LE);
  1006         fprintf(stdout, 
"private final int AV_CODEC_ID_PCM_U16BE = %#x;\n", AV_CODEC_ID_PCM_U16BE);
  1007         fprintf(stdout, 
"private final int AV_CODEC_ID_PCM_S8 = %#x;\n", AV_CODEC_ID_PCM_S8);
  1008         fprintf(stdout, 
"private final int AV_CODEC_ID_PCM_U8 = %#x;\n", AV_CODEC_ID_PCM_U8);
  1009         fprintf(stdout, 
"private final int AV_CODEC_ID_PCM_MULAW = %#x;\n", AV_CODEC_ID_PCM_MULAW);
  1010         fprintf(stdout, 
"private final int AV_CODEC_ID_PCM_ALAW = %#x;\n", AV_CODEC_ID_PCM_ALAW);
  1011         fprintf(stdout, 
"private final int AV_CODEC_ID_PCM_S32LE = %#x;\n", AV_CODEC_ID_PCM_S32LE);
  1012         fprintf(stdout, 
"private final int AV_CODEC_ID_PCM_S32BE = %#x;\n", AV_CODEC_ID_PCM_S32BE);
  1013         fprintf(stdout, 
"private final int AV_CODEC_ID_PCM_U32LE = %#x;\n", AV_CODEC_ID_PCM_U32LE);
  1014         fprintf(stdout, 
"private final int AV_CODEC_ID_PCM_U32BE = %#x;\n", AV_CODEC_ID_PCM_U32BE);
  1015         fprintf(stdout, 
"private final int AV_CODEC_ID_PCM_S24LE = %#x;\n", AV_CODEC_ID_PCM_S24LE);
  1016         fprintf(stdout, 
"private final int AV_CODEC_ID_PCM_S24BE = %#x;\n", AV_CODEC_ID_PCM_S24BE);
  1017         fprintf(stdout, 
"private final int AV_CODEC_ID_PCM_U24LE = %#x;\n", AV_CODEC_ID_PCM_U24LE);
  1018         fprintf(stdout, 
"private final int AV_CODEC_ID_PCM_U24BE = %#x;\n", AV_CODEC_ID_PCM_U24BE);
  1019         fprintf(stdout, 
"private final int AV_CODEC_ID_PCM_S24DAUD = %#x;\n", AV_CODEC_ID_PCM_S24DAUD);
  1020         fprintf(stdout, 
"private final int AV_CODEC_ID_PCM_ZORK = %#x;\n", AV_CODEC_ID_PCM_ZORK);
  1021         fprintf(stdout, 
"private final int AV_CODEC_ID_PCM_S16LE_PLANAR = %#x;\n", AV_CODEC_ID_PCM_S16LE_PLANAR);
  1022         fprintf(stdout, 
"private final int AV_CODEC_ID_PCM_DVD = %#x;\n", AV_CODEC_ID_PCM_DVD);
  1023         fprintf(stdout, 
"private final int AV_CODEC_ID_PCM_F32BE = %#x;\n", AV_CODEC_ID_PCM_F32BE);
  1024         fprintf(stdout, 
"private final int AV_CODEC_ID_PCM_F32LE = %#x;\n", AV_CODEC_ID_PCM_F32LE);
  1025         fprintf(stdout, 
"private final int AV_CODEC_ID_PCM_F64BE = %#x;\n", AV_CODEC_ID_PCM_F64BE);
  1026         fprintf(stdout, 
"private final int AV_CODEC_ID_PCM_F64LE = %#x;\n", AV_CODEC_ID_PCM_F64LE);
  1027         fprintf(stdout, 
"private final int AV_CODEC_ID_PCM_BLURAY = %#x;\n", AV_CODEC_ID_PCM_BLURAY);
  1028         fprintf(stdout, 
"private final int AV_CODEC_ID_PCM_LXF = %#x;\n", AV_CODEC_ID_PCM_LXF);
  1029         fprintf(stdout, 
"private final int AV_CODEC_ID_S302M = %#x;\n", AV_CODEC_ID_S302M);
  1030         fprintf(stdout, 
"private final int AV_CODEC_ID_PCM_S8_PLANAR = %#x;\n", AV_CODEC_ID_PCM_S8_PLANAR);
  1031         fprintf(stdout, 
"private final int AV_CODEC_ID_PCM_S24LE_PLANAR = %#x;\n", AV_CODEC_ID_PCM_S24LE_PLANAR);
  1032         fprintf(stdout, 
"private final int AV_CODEC_ID_PCM_S32LE_PLANAR = %#x;\n", AV_CODEC_ID_PCM_S32LE_PLANAR);
  1033         fprintf(stdout, 
"private final int AV_CODEC_ID_PCM_S16BE_PLANAR = %#x;\n", AV_CODEC_ID_PCM_S16BE_PLANAR);
  1036         fprintf(stdout, 
"private final int AV_CODEC_ID_ADPCM_IMA_QT = %#x;\n", AV_CODEC_ID_ADPCM_IMA_QT);
  1037         fprintf(stdout, 
"private final int AV_CODEC_ID_ADPCM_IMA_WAV = %#x;\n", AV_CODEC_ID_ADPCM_IMA_WAV);
  1038         fprintf(stdout, 
"private final int AV_CODEC_ID_ADPCM_IMA_DK3 = %#x;\n", AV_CODEC_ID_ADPCM_IMA_DK3);
  1039         fprintf(stdout, 
"private final int AV_CODEC_ID_ADPCM_IMA_DK4 = %#x;\n", AV_CODEC_ID_ADPCM_IMA_DK4);
  1040         fprintf(stdout, 
"private final int AV_CODEC_ID_ADPCM_IMA_WS = %#x;\n", AV_CODEC_ID_ADPCM_IMA_WS);
  1041         fprintf(stdout, 
"private final int AV_CODEC_ID_ADPCM_IMA_SMJPEG = %#x;\n", AV_CODEC_ID_ADPCM_IMA_SMJPEG);
  1042         fprintf(stdout, 
"private final int AV_CODEC_ID_ADPCM_MS = %#x;\n", AV_CODEC_ID_ADPCM_MS);
  1043         fprintf(stdout, 
"private final int AV_CODEC_ID_ADPCM_4XM = %#x;\n", AV_CODEC_ID_ADPCM_4XM);
  1044         fprintf(stdout, 
"private final int AV_CODEC_ID_ADPCM_XA = %#x;\n", AV_CODEC_ID_ADPCM_XA);
  1045         fprintf(stdout, 
"private final int AV_CODEC_ID_ADPCM_ADX = %#x;\n", AV_CODEC_ID_ADPCM_ADX);
  1046         fprintf(stdout, 
"private final int AV_CODEC_ID_ADPCM_EA = %#x;\n", AV_CODEC_ID_ADPCM_EA);
  1047         fprintf(stdout, 
"private final int AV_CODEC_ID_ADPCM_G726 = %#x;\n", AV_CODEC_ID_ADPCM_G726);
  1048         fprintf(stdout, 
"private final int AV_CODEC_ID_ADPCM_CT = %#x;\n", AV_CODEC_ID_ADPCM_CT);
  1049         fprintf(stdout, 
"private final int AV_CODEC_ID_ADPCM_SWF = %#x;\n", AV_CODEC_ID_ADPCM_SWF);
  1050         fprintf(stdout, 
"private final int AV_CODEC_ID_ADPCM_YAMAHA = %#x;\n", AV_CODEC_ID_ADPCM_YAMAHA);
  1051         fprintf(stdout, 
"private final int AV_CODEC_ID_ADPCM_SBPRO_4 = %#x;\n", AV_CODEC_ID_ADPCM_SBPRO_4);
  1052         fprintf(stdout, 
"private final int AV_CODEC_ID_ADPCM_SBPRO_3 = %#x;\n", AV_CODEC_ID_ADPCM_SBPRO_3);
  1053         fprintf(stdout, 
"private final int AV_CODEC_ID_ADPCM_SBPRO_2 = %#x;\n", AV_CODEC_ID_ADPCM_SBPRO_2);
  1054         fprintf(stdout, 
"private final int AV_CODEC_ID_ADPCM_THP = %#x;\n", AV_CODEC_ID_ADPCM_THP);
  1055         fprintf(stdout, 
"private final int AV_CODEC_ID_ADPCM_IMA_AMV = %#x;\n", AV_CODEC_ID_ADPCM_IMA_AMV);
  1056         fprintf(stdout, 
"private final int AV_CODEC_ID_ADPCM_EA_R1 = %#x;\n", AV_CODEC_ID_ADPCM_EA_R1);
  1057         fprintf(stdout, 
"private final int AV_CODEC_ID_ADPCM_EA_R3 = %#x;\n", AV_CODEC_ID_ADPCM_EA_R3);
  1058         fprintf(stdout, 
"private final int AV_CODEC_ID_ADPCM_EA_R2 = %#x;\n", AV_CODEC_ID_ADPCM_EA_R2);
  1059         fprintf(stdout, 
"private final int AV_CODEC_ID_ADPCM_IMA_EA_SEAD = %#x;\n", AV_CODEC_ID_ADPCM_IMA_EA_SEAD);
  1060         fprintf(stdout, 
"private final int AV_CODEC_ID_ADPCM_IMA_EA_EACS = %#x;\n", AV_CODEC_ID_ADPCM_IMA_EA_EACS);
  1061         fprintf(stdout, 
"private final int AV_CODEC_ID_ADPCM_EA_XAS = %#x;\n", AV_CODEC_ID_ADPCM_EA_XAS);
  1062         fprintf(stdout, 
"private final int AV_CODEC_ID_ADPCM_EA_MAXIS_XA = %#x;\n", AV_CODEC_ID_ADPCM_EA_MAXIS_XA);
  1063         fprintf(stdout, 
"private final int AV_CODEC_ID_ADPCM_IMA_ISS = %#x;\n", AV_CODEC_ID_ADPCM_IMA_ISS);
  1064         fprintf(stdout, 
"private final int AV_CODEC_ID_ADPCM_G722 = %#x;\n", AV_CODEC_ID_ADPCM_G722);
  1065         fprintf(stdout, 
"private final int AV_CODEC_ID_ADPCM_IMA_APC = %#x;\n", AV_CODEC_ID_ADPCM_IMA_APC);
  1066         fprintf(stdout, 
"private final int AV_CODEC_ID_ADPCM_VIMA = %#x;\n", AV_CODEC_ID_ADPCM_VIMA);
  1067         fprintf(stdout, 
"private final int AV_CODEC_ID_ADPCM_AFC = %#x;\n", AV_CODEC_ID_ADPCM_AFC);
  1068         fprintf(stdout, 
"private final int AV_CODEC_ID_ADPCM_IMA_OKI = %#x;\n", AV_CODEC_ID_ADPCM_IMA_OKI);
  1071         fprintf(stdout, 
"private final int AV_CODEC_ID_AMR_NB = %#x;\n", AV_CODEC_ID_AMR_NB);
  1072         fprintf(stdout, 
"private final int AV_CODEC_ID_AMR_WB = %#x;\n", AV_CODEC_ID_AMR_WB);
  1075         fprintf(stdout, 
"private final int AV_CODEC_ID_RA_144 = %#x;\n", AV_CODEC_ID_RA_144);
  1076         fprintf(stdout, 
"private final int AV_CODEC_ID_RA_288 = %#x;\n", AV_CODEC_ID_RA_288);
  1079         fprintf(stdout, 
"private final int AV_CODEC_ID_ROQ_DPCM = %#x;\n", AV_CODEC_ID_ROQ_DPCM);
  1080         fprintf(stdout, 
"private final int AV_CODEC_ID_INTERPLAY_DPCM = %#x;\n", AV_CODEC_ID_INTERPLAY_DPCM);
  1081         fprintf(stdout, 
"private final int AV_CODEC_ID_XAN_DPCM = %#x;\n", AV_CODEC_ID_XAN_DPCM);
  1082         fprintf(stdout, 
"private final int AV_CODEC_ID_SOL_DPCM = %#x;\n", AV_CODEC_ID_SOL_DPCM);
  1085         fprintf(stdout, 
"private final int AV_CODEC_ID_MP2 = %#x;\n", AV_CODEC_ID_MP2);
  1086         fprintf(stdout, 
"private final int AV_CODEC_ID_MP3 = %#x;\n", AV_CODEC_ID_MP3); 
  1087         fprintf(stdout, 
"private final int AV_CODEC_ID_AAC = %#x;\n", AV_CODEC_ID_AAC);
  1088         fprintf(stdout, 
"private final int AV_CODEC_ID_AC3 = %#x;\n", AV_CODEC_ID_AC3);
  1089         fprintf(stdout, 
"private final int AV_CODEC_ID_DTS = %#x;\n", AV_CODEC_ID_DTS);
  1090         fprintf(stdout, 
"private final int AV_CODEC_ID_VORBIS = %#x;\n", AV_CODEC_ID_VORBIS);
  1091         fprintf(stdout, 
"private final int AV_CODEC_ID_DVAUDIO = %#x;\n", AV_CODEC_ID_DVAUDIO);
  1092         fprintf(stdout, 
"private final int AV_CODEC_ID_WMAV1 = %#x;\n", AV_CODEC_ID_WMAV1);
  1093         fprintf(stdout, 
"private final int AV_CODEC_ID_WMAV2 = %#x;\n", AV_CODEC_ID_WMAV2);
  1094         fprintf(stdout, 
"private final int AV_CODEC_ID_MACE3 = %#x;\n", AV_CODEC_ID_MACE3);
  1095         fprintf(stdout, 
"private final int AV_CODEC_ID_MACE6 = %#x;\n", AV_CODEC_ID_MACE6);
  1096         fprintf(stdout, 
"private final int AV_CODEC_ID_VMDAUDIO = %#x;\n", AV_CODEC_ID_VMDAUDIO);
  1097         fprintf(stdout, 
"private final int AV_CODEC_ID_FLAC = %#x;\n", AV_CODEC_ID_FLAC);
  1098         fprintf(stdout, 
"private final int AV_CODEC_ID_MP3ADU = %#x;\n", AV_CODEC_ID_MP3ADU);
  1099         fprintf(stdout, 
"private final int AV_CODEC_ID_MP3ON4 = %#x;\n", AV_CODEC_ID_MP3ON4);
  1100         fprintf(stdout, 
"private final int AV_CODEC_ID_SHORTEN = %#x;\n", AV_CODEC_ID_SHORTEN);
  1101         fprintf(stdout, 
"private final int AV_CODEC_ID_ALAC = %#x;\n", AV_CODEC_ID_ALAC);
  1102         fprintf(stdout, 
"private final int AV_CODEC_ID_WESTWOOD_SND1 = %#x;\n", AV_CODEC_ID_WESTWOOD_SND1);
  1103         fprintf(stdout, 
"private final int AV_CODEC_ID_GSM = %#x;\n", AV_CODEC_ID_GSM); 
  1104         fprintf(stdout, 
"private final int AV_CODEC_ID_QDM2 = %#x;\n", AV_CODEC_ID_QDM2);
  1105         fprintf(stdout, 
"private final int AV_CODEC_ID_COOK = %#x;\n", AV_CODEC_ID_COOK);
  1106         fprintf(stdout, 
"private final int AV_CODEC_ID_TRUESPEECH = %#x;\n", AV_CODEC_ID_TRUESPEECH);
  1107         fprintf(stdout, 
"private final int AV_CODEC_ID_TTA = %#x;\n", AV_CODEC_ID_TTA);
  1108         fprintf(stdout, 
"private final int AV_CODEC_ID_SMACKAUDIO = %#x;\n", AV_CODEC_ID_SMACKAUDIO);
  1109         fprintf(stdout, 
"private final int AV_CODEC_ID_QCELP = %#x;\n", AV_CODEC_ID_QCELP);
  1110         fprintf(stdout, 
"private final int AV_CODEC_ID_WAVPACK = %#x;\n", AV_CODEC_ID_WAVPACK);
  1111         fprintf(stdout, 
"private final int AV_CODEC_ID_DSICINAUDIO = %#x;\n", AV_CODEC_ID_DSICINAUDIO);
  1112         fprintf(stdout, 
"private final int AV_CODEC_ID_IMC = %#x;\n", AV_CODEC_ID_IMC);
  1113         fprintf(stdout, 
"private final int AV_CODEC_ID_MUSEPACK7 = %#x;\n", AV_CODEC_ID_MUSEPACK7);
  1114         fprintf(stdout, 
"private final int AV_CODEC_ID_MLP = %#x;\n", AV_CODEC_ID_MLP);
  1115         fprintf(stdout, 
"private final int AV_CODEC_ID_GSM_MS = %#x;\n", AV_CODEC_ID_GSM_MS); 
  1116         fprintf(stdout, 
"private final int AV_CODEC_ID_ATRAC3 = %#x;\n", AV_CODEC_ID_ATRAC3);
  1118         fprintf(stdout, 
"private final int AV_CODEC_ID_APE = %#x;\n", AV_CODEC_ID_APE);
  1119         fprintf(stdout, 
"private final int AV_CODEC_ID_NELLYMOSER = %#x;\n", AV_CODEC_ID_NELLYMOSER);
  1120         fprintf(stdout, 
"private final int AV_CODEC_ID_MUSEPACK8 = %#x;\n", AV_CODEC_ID_MUSEPACK8);
  1121         fprintf(stdout, 
"private final int AV_CODEC_ID_SPEEX = %#x;\n", AV_CODEC_ID_SPEEX);
  1122         fprintf(stdout, 
"private final int AV_CODEC_ID_WMAVOICE = %#x;\n", AV_CODEC_ID_WMAVOICE);
  1123         fprintf(stdout, 
"private final int AV_CODEC_ID_WMAPRO = %#x;\n", AV_CODEC_ID_WMAPRO);
  1124         fprintf(stdout, 
"private final int AV_CODEC_ID_WMALOSSLESS = %#x;\n", AV_CODEC_ID_WMALOSSLESS);
  1125         fprintf(stdout, 
"private final int AV_CODEC_ID_ATRAC3P = %#x;\n", AV_CODEC_ID_ATRAC3P);
  1126         fprintf(stdout, 
"private final int AV_CODEC_ID_EAC3 = %#x;\n", AV_CODEC_ID_EAC3);
  1127         fprintf(stdout, 
"private final int AV_CODEC_ID_SIPR = %#x;\n", AV_CODEC_ID_SIPR);
  1128         fprintf(stdout, 
"private final int AV_CODEC_ID_MP1 = %#x;\n", AV_CODEC_ID_MP1);
  1129         fprintf(stdout, 
"private final int AV_CODEC_ID_TWINVQ = %#x;\n", AV_CODEC_ID_TWINVQ);
  1130         fprintf(stdout, 
"private final int AV_CODEC_ID_TRUEHD = %#x;\n", AV_CODEC_ID_TRUEHD);
  1131         fprintf(stdout, 
"private final int AV_CODEC_ID_MP4ALS = %#x;\n", AV_CODEC_ID_MP4ALS);
  1132         fprintf(stdout, 
"private final int AV_CODEC_ID_ATRAC1 = %#x;\n", AV_CODEC_ID_ATRAC1);
  1133         fprintf(stdout, 
"private final int AV_CODEC_ID_BINKAUDIO_RDFT = %#x;\n", AV_CODEC_ID_BINKAUDIO_RDFT);
  1134         fprintf(stdout, 
"private final int AV_CODEC_ID_BINKAUDIO_DCT = %#x;\n", AV_CODEC_ID_BINKAUDIO_DCT);
  1135         fprintf(stdout, 
"private final int AV_CODEC_ID_AAC_LATM = %#x;\n", AV_CODEC_ID_AAC_LATM);
  1136         fprintf(stdout, 
"private final int AV_CODEC_ID_QDMC = %#x;\n", AV_CODEC_ID_QDMC);
  1137         fprintf(stdout, 
"private final int AV_CODEC_ID_CELT = %#x;\n", AV_CODEC_ID_CELT);
  1138         fprintf(stdout, 
"private final int AV_CODEC_ID_G723_1 = %#x;\n", AV_CODEC_ID_G723_1);
  1139         fprintf(stdout, 
"private final int AV_CODEC_ID_G729 = %#x;\n", AV_CODEC_ID_G729);
  1140         fprintf(stdout, 
"private final int AV_CODEC_ID_8SVX_EXP = %#x;\n", AV_CODEC_ID_8SVX_EXP);
  1141         fprintf(stdout, 
"private final int AV_CODEC_ID_8SVX_FIB = %#x;\n", AV_CODEC_ID_8SVX_FIB);
  1142         fprintf(stdout, 
"private final int AV_CODEC_ID_BMV_AUDIO = %#x;\n", AV_CODEC_ID_BMV_AUDIO);
  1143         fprintf(stdout, 
"private final int AV_CODEC_ID_RALF = %#x;\n", AV_CODEC_ID_RALF);
  1144         fprintf(stdout, 
"private final int AV_CODEC_ID_IAC = %#x;\n", AV_CODEC_ID_IAC);
  1145         fprintf(stdout, 
"private final int AV_CODEC_ID_ILBC = %#x;\n", AV_CODEC_ID_ILBC);
  1146         fprintf(stdout, 
"private final int AV_CODEC_ID_COMFORT_NOISE = %#x;\n", AV_CODEC_ID_COMFORT_NOISE);
  1147         fprintf(stdout, 
"private final int AV_CODEC_ID_FFWAVESYNTH = %#x;\n", AV_CODEC_ID_FFWAVESYNTH);
  1150         fprintf(stdout, 
"private final int AV_CODEC_ID_SONIC = %#x;\n", AV_CODEC_ID_SONIC);
  1151         fprintf(stdout, 
"private final int AV_CODEC_ID_SONIC_LS = %#x;\n", AV_CODEC_ID_SONIC_LS);
  1152         fprintf(stdout, 
"private final int AV_CODEC_ID_PAF_AUDIO = %#x;\n", AV_CODEC_ID_PAF_AUDIO);
  1153         fprintf(stdout, 
"private final int AV_CODEC_ID_OPUS = %#x;\n", AV_CODEC_ID_OPUS);
  1154         fprintf(stdout, 
"private final int AV_CODEC_ID_TAK = %#x;\n", AV_CODEC_ID_TAK);
  1155         fprintf(stdout, 
"private final int AV_CODEC_ID_EVRC = %#x;\n", AV_CODEC_ID_EVRC);
  1156         fprintf(stdout, 
"private final int AV_CODEC_ID_SMV = %#x;\n", AV_CODEC_ID_SMV);
  1165     avformat_network_init();
  1167     return JNI_VERSION_1_6;
 void logFine(FFAudioIO *aio, int err, const char *message)
Log a debug message. 
void logWarning(FFAudioIO *aio, int err, const char *message)
Log a warning. 
int stream_index
Index of the audio stream we are using. 
void throwIOExceptionIfError(JNIEnv *env, int err, const char *message)
Throws an IOException. 
AVFormatContext * format_context
Current AVFormatContext. 
AVStream * stream
Audio stream we are interested in. 
uint8_t ** audio_data
Audio data (accommodates multiple planes) 
uint64_t decoded_samples
Running count of decoded samples. 
void throwFileNotFoundExceptionIfError(JNIEnv *env, int err, const char *message)
Throws an IllegalArgumentException. 
int ff_open_stream(JNIEnv *env, AVStream *stream, AVCodecContext **context)
Opens the given stream, i.e. 
int ff_big_endian(enum AVCodecID codec_id)
Indicates whether the given id belongs to a big endian codec. 
jint java_buffer_capacity
Current capacity of the Java nativeBuffer. 
void throwUnsupportedAudioFileExceptionIfError(JNIEnv *env, int err, const char *message)
Throws an UnsupportedAudioFileException. 
int ff_open_file(JNIEnv *env, AVFormatContext **format_context, AVStream **openedStream, AVCodecContext **context, int *stream_index, const char *url)
Opens the input file/url, allocates a AVFormatContext for it and opens the audio stream with an appro...
int ff_fill_buffer(FFAudioIO *aio)
Reads a frame via av_read_frame(AVFormatContext, AVPacket), decodes it to a AVPacket, and writes the result to the Java-side nativeBuffer. 
int ff_init_audioio(JNIEnv *env, FFAudioIO *aio)
Initialize our main context FFAudioIO, so that SwrContext, decode buffers and the encoder are set to ...
int got_frame
Indicates whether we got a frame in the last call to avcodec_decode_audio4. 
int ff_init_encoder(JNIEnv *env, FFAudioIO *aio, AVCodec *encoder)
Allocates and initializes the encoder context and frame in FFAudioIO. 
AVFrame * encode_frame
AVFrame for encoding. 
int ff_open_format_context(JNIEnv *env, AVFormatContext **format_context, const char *url)
Opens the input file/url and allocates a AVFormatContext for it, but does not open the audio stream w...
SwrContext * swr_context
Resampling context. 
AVPacket decode_packet
AVPacket for decoding. 
uint64_t resampled_samples
Count of resampled samples. 
JNIEnv * env
JNI environment. 
AVPacket encode_packet
AVPacket for encoding. 
AVCodec * ff_find_encoder(enum AVSampleFormat sampleFormat, int bits, int big_endian, int signedSamples)
Finds an AVCodec encoder for the given sample format, bits per sample, byte order and signed/unsigned...
void throwIndexOutOfBoundsExceptionIfError(JNIEnv *env, int err, int index)
Throws an IndexOutOfBoundsException. 
AVCodecContext * decode_context
Codec context for decoding. 
AVCodecContext * encode_context
Codec context for encoding. 
JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void *reserved)
Make sure FFmpeg is initialized all the way. 
Central context representing the native peer to the Java FFNativePeerInputStream object. 
AVFrame * decode_frame
AVFrame for decoding. 
void ff_audioio_free(FFAudioIO *aio)
Free all resources held by aio and then itself. 
uint64_t timestamp
Current timestamp (in samples, not seconds) 
jobject java_instance
Calling Java instance.