示例#1
0
/*
 * Class:     com_zhutieju_testservice_H264Android
 * Method:    dalDecoder
 * Signature: ([BI[B)I
 */
JNIEXPORT jint JNICALL Java_com_zhutieju_testservice_H264Android_dalDecoder
  (JNIEnv* env, jobject thiz, jbyteArray in, jint nalLen, jbyteArray out)
{
	int i;
	int imod;
	int got_picture=0;

	jbyte * Buf = (jbyte*)(*env)->GetByteArrayElements(env, in, 0);
	jbyte * Pixel= (jbyte*)(*env)->GetByteArrayElements(env, out, 0);

	int consumed_bytes = avcodec_decode_video(c, picture, &got_picture, Buf, nalLen);

	if(got_picture > 0)
	{
		DisplayYUV_16((int*)Pixel, picture->data[0], picture->data[1], picture->data[2], c->width, c->height, picture->linesize[0], picture->linesize[1], iWidth);
/*
		for(i=0; i<c->height; i++)
			fwrite(picture->data[0] + i * picture->linesize[0], 1, c->width, outf);

		for(i=0; i<c->height/2; i++)
			fwrite(picture->data[1] + i * picture->linesize[1], 1, c->width/2, outf);

		for(i=0; i<c->height/2; i++)
			fwrite(picture->data[2] + i * picture->linesize[2], 1, c->width/2, outf);
// */
	}

    (*env)->ReleaseByteArrayElements(env, in, Buf, 0);
    (*env)->ReleaseByteArrayElements(env, out, Pixel, 0);

	return consumed_bytes;
}
示例#2
0
/*
 * Class:     h264_com_VView
 * Method:    DecoderNal
 * Signature: ([B[I)I
 */
jint Java_h264_com_VView_DecoderNal(JNIEnv* env, jobject thiz, jbyteArray in, jint nalLen, jbyteArray out)
{
	int i;
	int imod;
	int got_picture;

	jbyte * Buf = (jbyte*)(*env)->GetByteArrayElements(env, in, 0);
	jbyte * Pixel= (jbyte*)(*env)->GetByteArrayElements(env, out, 0);
	
	int consumed_bytes = decode_frame(c, picture, &got_picture, Buf, nalLen); 

	if(consumed_bytes > 0)
	{
		DisplayYUV_16((int*)Pixel, picture->data[0], picture->data[1], picture->data[2], c->width, c->height, picture->linesize[0], picture->linesize[1], iWidth);	
/*
		for(i=0; i<c->height; i++)
			fwrite(picture->data[0] + i * picture->linesize[0], 1, c->width, outf);

		for(i=0; i<c->height/2; i++)
			fwrite(picture->data[1] + i * picture->linesize[1], 1, c->width/2, outf);

		for(i=0; i<c->height/2; i++)
			fwrite(picture->data[2] + i * picture->linesize[2], 1, c->width/2, outf);
// */
	}
	
    (*env)->ReleaseByteArrayElements(env, in, Buf, 0);    
    (*env)->ReleaseByteArrayElements(env, out, Pixel, 0); 

	return consumed_bytes;	
}
示例#3
0
/*
 * Class:     h264_com_VView
 * Method:    DecoderNal
 * Signature: ([B[I)I
 */
jint Java_h264_com_VView_DecoderNal(JNIEnv* env, jobject thiz,jlong pDecoder,jbyteArray in, jint nalLen, jbyteArray out)
{
	int i;
	int imod;
	int got_picture;
	if (pDecoder)
	{
		Decoder * de=(Decoder * )pDecoder;

		jbyte * Buf = (jbyte*)(*env)->GetByteArrayElements(env, in, 0);
		jbyte * Pixel= (jbyte*)(*env)->GetByteArrayElements(env, out, 0);

		int consumed_bytes = decode_frame(de->c, de->picture, &got_picture, Buf, nalLen);

		if(consumed_bytes > 0)
		{
			DisplayYUV_16((int*)Pixel, de->picture->data[0], de->picture->data[1], de->picture->data[2], de->c->width, de->c->height, de->picture->linesize[0], de->picture->linesize[1],  de->c->width);
		}

		(*env)->ReleaseByteArrayElements(env, in, Buf, 0);
		(*env)->ReleaseByteArrayElements(env, out, Pixel, 0);
	
		return consumed_bytes;
	}
	else
		return 0;
}