mirror of
https://git.ffmpeg.org/ffmpeg.git
synced 2025-01-05 23:00:02 +00:00
removing keyframe prediction and checksum threshold
Originally committed as revision 2991 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
parent
19f82bc824
commit
aec8f88a9e
@ -25,7 +25,6 @@
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
* TODO:
|
* TODO:
|
||||||
* - seeking
|
|
||||||
* - index writing
|
* - index writing
|
||||||
* - index packet reading support
|
* - index packet reading support
|
||||||
*/
|
*/
|
||||||
@ -59,7 +58,6 @@
|
|||||||
#define FLAG_PTS 16
|
#define FLAG_PTS 16
|
||||||
#define FLAG_FULL_PTS 4
|
#define FLAG_FULL_PTS 4
|
||||||
#define FLAG_KEY_FRAME 32
|
#define FLAG_KEY_FRAME 32
|
||||||
#define FLAG_PRED_KEY_FRAME 64
|
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
uint8_t flags;
|
uint8_t flags;
|
||||||
@ -478,7 +476,6 @@ static int nut_write_header(AVFormatContext *s)
|
|||||||
put_packetheader(nut, bc, 120+5*256, 1);
|
put_packetheader(nut, bc, 120+5*256, 1);
|
||||||
put_v(bc, 1); /* version */
|
put_v(bc, 1); /* version */
|
||||||
put_v(bc, s->nb_streams);
|
put_v(bc, s->nb_streams);
|
||||||
put_v(bc, 3);
|
|
||||||
|
|
||||||
build_frame_code(s);
|
build_frame_code(s);
|
||||||
assert(nut->frame_code['N'].flags == 1);
|
assert(nut->frame_code['N'].flags == 1);
|
||||||
@ -671,7 +668,7 @@ static int nut_write_packet(AVFormatContext *s, int stream_index,
|
|||||||
frame_code= -1;
|
frame_code= -1;
|
||||||
for(i=0; i<256; i++){
|
for(i=0; i<256; i++){
|
||||||
int stream_id_plus1= nut->frame_code[i].stream_id_plus1;
|
int stream_id_plus1= nut->frame_code[i].stream_id_plus1;
|
||||||
int fc_key_frame= stream->last_key_frame;
|
int fc_key_frame;
|
||||||
int length=0;
|
int length=0;
|
||||||
size_mul= nut->frame_code[i].size_mul;
|
size_mul= nut->frame_code[i].size_mul;
|
||||||
size_lsb= nut->frame_code[i].size_lsb;
|
size_lsb= nut->frame_code[i].size_lsb;
|
||||||
@ -680,12 +677,8 @@ static int nut_write_packet(AVFormatContext *s, int stream_index,
|
|||||||
if(stream_id_plus1 == 0) length+= get_length(stream_index);
|
if(stream_id_plus1 == 0) length+= get_length(stream_index);
|
||||||
else if(stream_id_plus1 - 1 != stream_index)
|
else if(stream_id_plus1 - 1 != stream_index)
|
||||||
continue;
|
continue;
|
||||||
if(flags & FLAG_PRED_KEY_FRAME){
|
fc_key_frame= !!(flags & FLAG_KEY_FRAME);
|
||||||
if(flags & FLAG_KEY_FRAME)
|
|
||||||
fc_key_frame= !fc_key_frame;
|
|
||||||
}else{
|
|
||||||
fc_key_frame= !!(flags & FLAG_KEY_FRAME);
|
|
||||||
}
|
|
||||||
assert(key_frame==0 || key_frame==1);
|
assert(key_frame==0 || key_frame==1);
|
||||||
if(fc_key_frame != key_frame)
|
if(fc_key_frame != key_frame)
|
||||||
continue;
|
continue;
|
||||||
@ -832,7 +825,6 @@ static int decode_main_header(NUTContext *nut){
|
|||||||
}
|
}
|
||||||
|
|
||||||
nut->stream_count = get_v(bc);
|
nut->stream_count = get_v(bc);
|
||||||
get_v(bc); //checksum threshold
|
|
||||||
|
|
||||||
for(i=0; i<256;){
|
for(i=0; i<256;){
|
||||||
int tmp_flags = get_v(bc);
|
int tmp_flags = get_v(bc);
|
||||||
@ -847,10 +839,6 @@ static int decode_main_header(NUTContext *nut){
|
|||||||
}
|
}
|
||||||
|
|
||||||
if((tmp_flags & FLAG_FRAME_TYPE) && tmp_flags != 1){
|
if((tmp_flags & FLAG_FRAME_TYPE) && tmp_flags != 1){
|
||||||
if(tmp_flags & FLAG_PRED_KEY_FRAME){
|
|
||||||
av_log(s, AV_LOG_ERROR, "keyframe prediction in non 0 frame type\n");
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
if(!(tmp_flags & FLAG_PTS) || !(tmp_flags & FLAG_FULL_PTS) ){
|
if(!(tmp_flags & FLAG_PTS) || !(tmp_flags & FLAG_FULL_PTS) ){
|
||||||
av_log(s, AV_LOG_ERROR, "no full pts in non 0 frame type\n");
|
av_log(s, AV_LOG_ERROR, "no full pts in non 0 frame type\n");
|
||||||
return -1;
|
return -1;
|
||||||
@ -1112,14 +1100,7 @@ static int decode_frame(NUTContext *nut, AVPacket *pkt, int frame_code, int fram
|
|||||||
|
|
||||||
// av_log(s, AV_LOG_DEBUG, "ft:%d ppts:%d %d %d\n", frame_type, stream->lru_pts_delta[0], stream->lru_pts_delta[1], stream->lru_pts_delta[2]);
|
// av_log(s, AV_LOG_DEBUG, "ft:%d ppts:%d %d %d\n", frame_type, stream->lru_pts_delta[0], stream->lru_pts_delta[1], stream->lru_pts_delta[2]);
|
||||||
|
|
||||||
if(flags & FLAG_PRED_KEY_FRAME){
|
key_frame= !!(flags & FLAG_KEY_FRAME);
|
||||||
if(flags & FLAG_KEY_FRAME)
|
|
||||||
key_frame= !stream->last_key_frame;
|
|
||||||
else
|
|
||||||
key_frame= stream->last_key_frame;
|
|
||||||
}else{
|
|
||||||
key_frame= !!(flags & FLAG_KEY_FRAME);
|
|
||||||
}
|
|
||||||
|
|
||||||
if(flags & FLAG_PTS){
|
if(flags & FLAG_PTS){
|
||||||
if(flags & FLAG_FULL_PTS){
|
if(flags & FLAG_FULL_PTS){
|
||||||
|
Loading…
Reference in New Issue
Block a user