[FFmpeg-user] avfoundation on osx 10.7.5: issues with audio input

John Robinson jrobinsonmedia at gmail.com
Thu Mar 5 19:47:18 CET 2015


On Mar 4, 2015, at 4:44 PM, Carl Eugen Hoyos <cehoyos at ag.or.at> wrote:
> 
> Please add lines like the following:
> printf("float: %d, integer: %d, bps: %d, packed: %d \n",
> ctx->audio_float, ctx->audio_signed_integer,
> ctx->audio_bits_per_sample, ctx->audio_packed);
> 
> Run again and post the output.
> 
> Thank you!
> 
> Carl Eugen
> 

Carl - 

Here's the output after adding the logging - 

float: 0, integer: 4, bps: 24, packed: 8

I ended up modifying the code to make things work with both the mini's line-in, and soundflower. Sadly my machine is having a hard time keeping up. Here's the code though (in avfoundation.m):

//print some info, trying to figure out what soundflower/10.7.5 is giving us, and why it's exiting with unsupported audio
    printf("float: %d, integer: %d, bps: %d, packed: %d , formatId: %d\n", ctx->audio_float, ctx->audio_signed_integer,ctx->audio_bits_per_sample, ctx->audio_packed, basic_desc->mFormatID);
    
    if (basic_desc->mFormatID == kAudioFormatLinearPCM &&
        ctx->audio_float &&
        ctx->audio_bits_per_sample == 32 &&
        ctx->audio_packed) {
        stream->codec->codec_id = ctx->audio_be ? AV_CODEC_ID_PCM_F32BE : AV_CODEC_ID_PCM_F32LE;
    } else if (basic_desc->mFormatID == kAudioFormatLinearPCM &&
        ctx->audio_signed_integer &&
        ctx->audio_bits_per_sample == 16 &&
        ctx->audio_packed) {
        stream->codec->codec_id = ctx->audio_be ? AV_CODEC_ID_PCM_S16BE : AV_CODEC_ID_PCM_S16LE;
    } else if (basic_desc->mFormatID == kAudioFormatLinearPCM &&
        ctx->audio_signed_integer &&
        ctx->audio_bits_per_sample == 24 &&
        ctx->audio_packed) {
        //mac mini, osx 10.7.5 built-in line input
        stream->codec->codec_id = ctx->audio_be ? AV_CODEC_ID_PCM_S24BE : AV_CODEC_ID_PCM_S24LE;
    } else if (basic_desc->mFormatID == kAudioFormatLinearPCM &&
        ctx->audio_signed_integer &&
        ctx->audio_bits_per_sample == 32 &&
        ctx->audio_packed) {
        //mac mini, osx 10.7.5 soundflower input
        stream->codec->codec_id = ctx->audio_be ? AV_CODEC_ID_PCM_S32BE : AV_CODEC_ID_PCM_S32LE;
    } else {
        av_log(s, AV_LOG_ERROR, "audio format is not supported\n");
        return 1;
    }

JR



More information about the ffmpeg-user mailing list