📄 seek.c
字号:
#include "../mpeg3private.h"#include "../mpeg3protos.h"#include "mpeg3video.h"#include <stdlib.h>#include <string.h>unsigned int mpeg3bits_next_startcode(mpeg3_bits_t* stream){ /* Perform forwards search */ mpeg3bits_byte_align(stream);//printf("mpeg3bits_next_startcode 1 %lld %lld\n", // stream->demuxer->titles[0]->fs->current_byte, // stream->demuxer->titles[0]->fs->total_bytes);//mpeg3_read_next_packet(stream->demuxer);//printf("mpeg3bits_next_startcode 2 %d %d\n", // stream->demuxer->titles[0]->fs->current_byte, // stream->demuxer->titles[0]->fs->total_bytes); if (mpeg3bits_eof(stream)) return 0xffffffff;/* Perform search */ while(1) { unsigned int code = mpeg3bits_showbits32_noptr(stream); //printf("mpeg3bits_next_startcode 2 %lx\n", code); if((code >> 8) == MPEG3_PACKET_START_CODE_PREFIX) break; if(mpeg3bits_eof(stream)) return 0xffffffff; mpeg3bits_getbyte_noptr(stream); /* * printf("mpeg3bits_next_startcode 3 %08x %d %d\n", * mpeg3bits_showbits32_noptr(stream), * stream->demuxer->titles[0]->fs->current_byte, * stream->demuxer->titles[0]->fs->total_bytes); */ } //printf("mpeg3bits_next_startcode 4 %d %d\n", // stream->demuxer->titles[0]->fs->current_byte, // stream->demuxer->titles[0]->fs->total_bytes); return mpeg3bits_showbits32_noptr(stream);}#if 0/* Line up on the beginning of the next code. */int mpeg3video_next_code(mpeg3_bits_t* stream, unsigned int code){ while(!mpeg3bits_eof(stream) && mpeg3bits_showbits32_noptr(stream) != code) { mpeg3bits_getbyte_noptr(stream); } return mpeg3bits_eof(stream);}#endiflong mpeg3video_goptimecode_to_frame(mpeg3video_t *video){ /* printf("mpeg3video_goptimecode_to_frame %d %d %d %d %f\n", */ /* video->gop_timecode.hour, video->gop_timecode.minute, video->gop_timecode.second, video->gop_timecode.frame, video->frame_rate); */ return (long)(video->gop_timecode.hour * 3600 * video->frame_rate + video->gop_timecode.minute * 60 * video->frame_rate + video->gop_timecode.second * video->frame_rate + video->gop_timecode.frame) - 1 - video->first_frame;}int mpeg3video_match_refframes(mpeg3video_t *video){ unsigned char *dst, *src; int i, j, size; for(i = 0; i < 3; i++) { if(video->newframe[i]) { if(video->newframe[i] == video->refframe[i]) { src = video->refframe[i]; dst = video->oldrefframe[i]; } else { src = video->oldrefframe[i]; dst = video->refframe[i]; } if(i == 0) size = video->coded_picture_width * video->coded_picture_height + 32 * video->coded_picture_width; else size = video->chrom_width * video->chrom_height + 32 * video->chrom_width; memcpy(dst, src, size); } } return 0;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -