static jobject movie_decodeAsset(JNIEnv* env, jobject clazz, jlong native_asset) {
    android::Asset* asset = reinterpret_cast<android::Asset*>(native_asset);
    if (asset == NULL) return NULL;
    SkAutoTUnref<SkStreamRewindable> stream (new android::AssetStreamAdaptor(asset));
    SkMovie* moov = SkMovie::DecodeStream(stream.get());
    return create_jmovie(env, moov);
}
Example #2
0
static jobject movie_decodeStream(JNIEnv* env, jobject clazz, jobject istream) {

    NPE_CHECK_RETURN_ZERO(env, istream);

    // what is the lifetime of the array? Can the skstream hold onto it?
    jbyteArray byteArray = env->NewByteArray(16*1024);
    SkStream* strm = CreateJavaInputStreamAdaptor(env, istream, byteArray);
    if (NULL == strm) {
        return 0;
    }

    SkMovie* moov = SkMovie::DecodeStream(strm);
    strm->unref();
    return create_jmovie(env, moov);
}
static jobject movie_decodeByteArray(JNIEnv* env, jobject clazz,
                                     jbyteArray byteArray,
                                     jint offset, jint length) {

    NPE_CHECK_RETURN_ZERO(env, byteArray);

    int totalLength = env->GetArrayLength(byteArray);
    if ((offset | length) < 0 || offset + length > totalLength) {
        doThrowAIOOBE(env);
        return 0;
    }

    AutoJavaByteArray   ar(env, byteArray);
    SkMovie* moov = SkMovie::DecodeMemory(ar.ptr() + offset, length);
    return create_jmovie(env, moov);
}
Example #4
0
static jobject movie_decodeStream(JNIEnv* env,jobject movie,jobject jstream){
//	LOGI("movie_decodeStream");
//	GifFileType* gifFileType = NULL;
//	openStream(gifType,env,jstream);
//	GifMovie* moov = new GifMovie(gifType);
//	if(gifType==NULL){
//		LOGI("moov is null");
//	}else{
//		LOGI("moov is not null");
//	}
	 jbyteArray byteArray = env->NewByteArray(16*1024);
	 GifJavaInputStreamAdaptor* strm = GifJavaInputStreamAdaptor::CreateGifJavaInputStreamAdaptor(env, jstream, byteArray);
	 if (NULL == strm) {
	     return 0;
	 }

	GifMovie* moov = new GifMovie(strm);
	delete strm;
	return create_jmovie(env, moov);
}
static jobject movie_decodeStream(JNIEnv* env, jobject clazz, jobject istream) {

    NPE_CHECK_RETURN_ZERO(env, istream);

    jbyteArray byteArray = env->NewByteArray(16*1024);
    ScopedLocalRef<jbyteArray> scoper(env, byteArray);
    SkStream* strm = CreateJavaInputStreamAdaptor(env, istream, byteArray);
    if (NULL == strm) {
        return 0;
    }

    // Need to buffer enough input to be able to rewind as much as might be read by a decoder
    // trying to determine the stream's format. The only decoder for movies is GIF, which
    // will only read 6.
    // FIXME: Get this number from SkImageDecoder
    SkAutoTUnref<SkStreamRewindable> bufferedStream(SkFrontBufferedStream::Create(strm, 6));
    SkASSERT(bufferedStream.get() != NULL);

    SkMovie* moov = SkMovie::DecodeStream(bufferedStream);
    strm->unref();
    return create_jmovie(env, moov);
}
Example #6
0
static jobject movie_decodeFile(JNIEnv* env,jobject movie,jstring jpath){
	char* path = jstringtochar(env,jpath);
	GifMovie* moov = new GifMovie(path);
	return create_jmovie(env, moov);
}