Skip to content

ffmpeg: libjniaudio on gingerbread #1

@alexcohn

Description

@alexcohn

Hi,

I tried to run the ffpmeg app on Galaxy S with v. 2.3.3. Issue #1 was with libjniaudio - due to change of signature of android::AudioTrack::set().

Follows my patch for audiotrack.cpp, function AndroidAudioTrack_set():

status_t ret = NAME_NOT_FOUND;

void *lptr_media = dlopen("libmedia.so", 0);
__android_log_print(ANDROID_LOG_DEBUG, TAG, "dlopen returns %p", lptr_media);

if (lptr_media)         // first, try gingerbread
{
    status_t (*fptr_set)(AudioTrack* track,
                        int streamType,
                        uint32_t sampleRate,
                        int format,
                        int channels,
                        int frameCount,
                        uint32_t flags,
                        AudioTrack::callback_t cbf,
                        void* user,
                        int notificationFrames,
                        const sp<IMemory>& sharedBuffer,
                        bool threadCanCallJava,
                        int sessionId);

    fptr_set = (typeof fptr_set)dlsym(lptr_media, "_ZN7android10AudioTrack3setEijiiijPFviPvS1_ES1_iRKNS_2spINS_7IMemoryEEEbi");
    __android_log_print(ANDROID_LOG_DEBUG, TAG, "dlsym returns %p", fptr_set);

    if (fptr_set != 0)
    {
        ret = fptr_set(track,
                       streamType,
                       sampleRate,
                       format,
                       channels,
                       0, 0, 0, 0, 0, 0, 0, 0);
        __android_log_print(ANDROID_LOG_DEBUG, TAG, "fptr_set() returns %d", ret);
        dlclose(lptr_media);
        lptr_media = 0;
    }
}

if (lptr_media)         // second, try froyo
{
    status_t (*fptr_set)(AudioTrack* track,
                        int streamType,
                        uint32_t sampleRate,
                        int format,
                        int channels,
                        int frameCount,
                        uint32_t flags,
                        AudioTrack::callback_t cbf,
                        void* user,
                        int notificationFrames,
                        const sp<IMemory>& sharedBuffer,
                        bool threadCanCallJava);

    fptr_set = (typeof fptr_set)dlsym(lptr_media, "_ZN7android10AudioTrack3setEijiiijPFviPvS1_ES1_iRKNS_2spINS_7IMemoryEEEb");
    __android_log_print(ANDROID_LOG_INFO, TAG, "dlsym returns %p", fptr_set);

    if (fptr_set != 0)
    {
        ret = fptr_set(track,
                       streamType,
                       sampleRate,
                       format,
                       channels,
                       0, 0, 0, 0, 0, 0, 0); // push max number of parameters
        __android_log_print(ANDROID_LOG_INFO, TAG, "fptr_set() returns %d", ret);
        dlclose(lptr_media);
        lptr_media = 0;
    }
}

if (lptr_media)         // finally, close library anyway
{
    dlclose(lptr_media);
}

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions