Извлечение заголовка последовательности из видео файла mpeg
Я тоже новичок mpeg2dec
и я пытался извлечь заголовок последовательности из видеофайла с mpeg2.h
(от libmpeg2
) но никуда не денется.
Я пытался получить STATE_SEQUENCE
и попытался указать на это местоположение в файле, но не смог скопировать его в другой файл.
#include <stdio.h>
#include <stdlib.h>
#include <inttypes.h>
//mpeg2dec library
#include "mpeg2dec/mpeg2.h"
//jni header
#include "VideoProc.h"
int mpeg2Fun(uint8_t * pointer);
//jni function to get byte array from and return integer
JNIEXPORT jint JNICALL Java_VideoProc_mpeg2FunC(JNIEnv * env, jobject jobj, jbyteArray bytes)
{
jbyte u_byte[4096] ;
(*env)->GetByteArrayRegion(env,bytes, 0, 4096, u_byte);
jint reply=mpeg2Fun(u_byte);
return reply;
}
int mpeg2Fun(uint8_t * pointer)
{
mpeg2dec_t * decoder;
const mpeg2_info_t * info;
const mpeg2_sequence_t * sequence;
mpeg2_state_t state;
size_t size;
int framenum = 0;
decoder = mpeg2_init ();
if (decoder == NULL) {
fprintf (stderr, "Could not allocate a decoder object.\n");
exit (1);
}
info = mpeg2_info (decoder);
int t;
size = (size_t)-1;
do {
state = mpeg2_parse (decoder);
sequence = info->sequence;
switch (state) {
case STATE_BUFFER:
mpeg2_buffer (decoder, pointer, pointer + 4096);
break;
case STATE_SEQUENCE:
t=mpeg2_getpos(decoder);
return 4096-t;
break;
default:
break;
}
} while (size);
mpeg2_close (decoder);
}
В изложении дела STATE_SEQUENCE
: вместо возврата позиции я хотел записать весь заголовок последовательности в другой файл. Это правильно или нет?