2013-06-06 3 views
1

OpenSL ES의 URI 플레이어를 사용하여 원활한 루프를 만들기 위해 this 질문 (오디오의 길이를 쿼리)에서 가져온 코드를 실행 해 보았습니다. 예 : 030NDK OpenSL ES, URI (비 버퍼) 플레이어를 사용한 완벽한 루핑 사운드

나는 전체 파일 반복 작업 이외의 다른 것을 얻을 수 없다.

// enable whole file looping 
result = (*uriPlayerSeek)->SetLoop(uriPlayerSeek, SL_BOOLEAN_TRUE, 0, 200); 
assert(SL_RESULT_SUCCESS == result); 

다음 쿼리 루프 포인트 : 내가 루프를 설정하면 "-1 : 0 끝 시작"및 파일이 대신 처음부터 끝까지 루프

SLboolean b; 
    SLmillisecond start; 
    SLmillisecond end; 

    result = (*uriPlayerSeek)->GetLoop(uriPlayerSeek, &b, &start, &end); 
    assert(SL_RESULT_SUCCESS == result); 

    __android_log_print(ANDROID_LOG_DEBUG, "NDK_debug_tag: ", "start: %d end: %d", (int)start, (int)end); 

내가 얻을 그냥 작은 섹션을 루핑하는 것입니다.

SetLoop는 전체 파일 루핑을 가능하게 탐색 : 문서 here는 전체 파일 루핑을 언급하고있다. startPos 매개 변수는 이어야하며 endPos 매개 변수는 SL_TIME_UNKNOWN이어야합니다.

그러나 파일의 루핑 부분이 지원되지 않는다고 구체적으로 말하지는 않습니다. 아무도 이것으로 어떤 성공을 했습니까? 또는이 기능이 OpenSL ES Android 구현에서 지원되지 않는지 확인할 수 있습니까?

답변

0

스트림에서는 작동하지 않는다고 생각 합니다만 테스트하지는 않았지만 전체 사운드 데이터를 버퍼링하여 기간 선택을 할 수 있습니다.

얻을 수있는 -1은 SL_TIME_UNKNOWN (0xFFFFFFFF 부호 없음)이며 스트림의 지속 시간은 알 수 없습니다. 파일의 지속 기간 만 있으면 헤더 어딘가에 존재해야합니다.