static void
com_media_ffmpeg_FFMpegPlayer_setDataSourceAndHeaders(
        JNIEnv *env, jobject thiz, jstring path, jobject headers) {
    MediaPlayer* mp = getMediaPlayer(env, thiz);
    if (mp == NULL ) {
        jniThrowException(env, "java/lang/IllegalStateException", NULL);
        return;
    }

    if (path == NULL) {
        jniThrowException(env, "java/lang/IllegalArgumentException", NULL);
        return;
    }

    const char *pathStr = env->GetStringUTFChars(path, NULL);
    if (pathStr == NULL) {  // Out of memory
        jniThrowException(env, "java/lang/RuntimeException", "Out of memory");
        return;
    }

    __android_log_print(ANDROID_LOG_INFO, TAG, "setDataSource: path %s", pathStr);
    status_t opStatus = mp->setDataSource(pathStr);
    __android_log_print(ANDROID_LOG_INFO, TAG, "opStatus---->0x%X", opStatus);
    // Make sure that local ref is released before a potential exception
    env->ReleaseStringUTFChars(path, pathStr);

    process_media_player_call(
            env, thiz, opStatus, "java/io/IOException",
            "setDataSource failed." );
}
MediaPlayer* CameraService::newMediaPlayer(const char *file) {
    MediaPlayer* mp = new MediaPlayer();
    if (mp->setDataSource(file, NULL) == NO_ERROR) {
        mp->setAudioStreamType(AUDIO_STREAM_ENFORCED_AUDIBLE);
        mp->prepare();
    } else {
        LOGE("Failed to load CameraService sounds: %s", file);
        return NULL;
    }
    return mp;
}
static void
wseemann_media_FFmpegMediaPlayer_setDataSourceFD(JNIEnv *env, jobject thiz, jobject fileDescriptor, jlong offset, jlong length)
{
    MediaPlayer* mp = getMediaPlayer(env, thiz);
    if (mp == NULL ) {
        jniThrowException(env, "java/lang/IllegalStateException", NULL);
        return;
    }

    if (fileDescriptor == NULL) {
        jniThrowException(env, "java/lang/IllegalArgumentException", NULL);
        return;
    }
    int fd = jniGetFDFromFileDescriptor(env, fileDescriptor);
    __android_log_print(ANDROID_LOG_VERBOSE, LOG_TAG, "setDataSourceFD: fd %d", fd);
    process_media_player_call( env, thiz, mp->setDataSource(fd, offset, length), "java/io/IOException", "setDataSourceFD failed." );
}
void  BootAnimation::bootMusic()  
{  
    int index;  
    MediaPlayer* mp = new MediaPlayer();  

	 if((access(SYSTEM_BOOTMUSIC_FILE,F_OK))!=-1){  
		if (mp->setDataSource(SYSTEM_BOOTMUSIC_FILE, NULL) == NO_ERROR) {  
        mp->setAudioStreamType(AUDIO_STREAM_ENFORCED_AUDIBLE);  
        mp->prepare();
		mp->setLooping(true);  
	    }  
	    AudioSystem::getStreamVolumeIndex(AUDIO_STREAM_ENFORCED_AUDIBLE, &index);  
	    if (index != 0) {  
		
	        mp->seekTo(0);  
	        mp->start();  

	    } 
   	}  
}  
Пример #5
0
MediaPlayer* CameraService::newMediaPlayer(const char *file) {
#ifdef  MTK_CAMERAPROFILE_SUPPORT
    AutoCPTLog cptlog(Event_CS_newMediaPlayer);
#endif
    
#ifdef  MTK_CAMERA_BSP_SUPPORT    
    LOG1("[CameraService::newMediaPlayer] + (%s)\r\n", file);
#endif
    MediaPlayer* mp = new MediaPlayer();
    if (mp->setDataSource(file, NULL) == NO_ERROR) {
        mp->setAudioStreamType(AUDIO_STREAM_ENFORCED_AUDIBLE);
        mp->prepare();
    } else {
        ALOGE("Failed to load CameraService sounds: %s", file);
        return NULL;
    }
#ifdef  MTK_CAMERA_BSP_SUPPORT
    LOG1("[CameraService::newMediaPlayer] -\r\n");
#endif
    return mp;
}
Пример #6
0
int main(int argc, char **argv) {

  if (argc != 2) {
    ALOGE("filename unspecified");
    return 1;
  }
  signal(SIGTERM, signalHandler);
  signal(SIGHUP, signalHandler);
  signal(SIGPIPE, signalHandler);
  prctl(PR_SET_PDEATHSIG, SIGKILL);

  int fd = open(argv[1], O_RDONLY);
  if (fd < 0) {
    ALOGE("Error %d: Unable to open %s", argv[1]);
    return 1;
  }
  int64_t length = lseek64(fd, 0, SEEK_END);
  lseek64(fd, 0, SEEK_SET);

  OK(pipe(pipefd));

  sp<ProcessState> ps = ProcessState::self();
  ps->startThreadPool();

  MediaPlayer m;
  OK(m.setListener(new MPListener));
  OK(m.setDataSource(fd, 0, length));
  OK(m.prepare());
  OK(m.start());

  int c;
  TEMP_FAILURE_RETRY(read(pipefd[0], &c, 1));

  // Don't bother trying to shut down cleanly, just let mediaplayer deal with the
  // unexpected disconnect.
  exit(0);
}
static void
wseemann_media_FFmpegMediaPlayer_setDataSourceAndHeaders(
        JNIEnv *env, jobject thiz, jstring path,
        jobjectArray keys, jobjectArray values) {

    MediaPlayer* mp = getMediaPlayer(env, thiz);
    if (mp == NULL ) {
        jniThrowException(env, "java/lang/IllegalStateException", NULL);
        return;
    }

    if (path == NULL) {
        jniThrowException(env, "java/lang/IllegalArgumentException", NULL);
        return;
    }

    const char *tmp = env->GetStringUTFChars(path, NULL);
    if (tmp == NULL) {  // Out of memory
        return;
    }
    
    // Workaround for FFmpeg ticket #998
    // "must convert mms://... streams to mmsh://... for FFmpeg to work"
    char *restrict_to = strstr(tmp, "mms://");
    if (restrict_to) {
    	strncpy(restrict_to, "mmsh://", 6);
    	puts(tmp);
    }

    char *headers = NULL;

    if (keys && values != NULL) {
    	int keysCount = env->GetArrayLength(keys);
    	int valuesCount = env->GetArrayLength(values);

    	if (keysCount != valuesCount) {
    		__android_log_print(ANDROID_LOG_ERROR, LOG_TAG, "keys and values arrays have different length");
    		jniThrowException(env, "java/lang/IllegalArgumentException", NULL);
    		return;
    	}

    	int i = 0;
    	const char *rawString = NULL;
    	char hdrs[2048];
    	
    	strcpy(hdrs, "");

    	for (i = 0; i < keysCount; i++) {
    		jstring key = (jstring) env->GetObjectArrayElement(keys, i);
    		rawString = env->GetStringUTFChars(key, NULL);
    		strcat(hdrs, rawString);
    		strcat(hdrs, ": ");
    		env->ReleaseStringUTFChars(key, rawString);

    		jstring value = (jstring) env->GetObjectArrayElement(values, i);
    		rawString = env->GetStringUTFChars(value, NULL);
    		strcat(hdrs, rawString);
    		strcat(hdrs, "\r\n");
    		env->ReleaseStringUTFChars(value, rawString);
    	}

    	headers = &hdrs[0];
    }
    
    __android_log_print(ANDROID_LOG_VERBOSE, LOG_TAG, "setDataSource: path %s", tmp);

    status_t opStatus =
        mp->setDataSource(tmp, headers);

    process_media_player_call(
            env, thiz, opStatus, "java/io/IOException",
            "setDataSource failed." );
    
    env->ReleaseStringUTFChars(path, tmp);
    tmp = NULL;
}