Merge commit 'b08569a239
'
* commit 'b08569a239
':
lavf: Replace the ASF demuxer
Conflicts:
Changelog
libavformat/asf.h
libavformat/asfdec.c
libavformat/version.h
tests/ref/fate/wmv8-drm-nodec
tests/ref/seek/lavf-asf
The rewritten demuxer is placed in a new file, the current demuxer is
left as default. Carl has tested both and the one working better is
default.
Merged-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
commit
30b8f3e7dc
9 changed files with 1773 additions and 34 deletions
|
@ -8,6 +8,7 @@ version <next>:
|
||||||
- Hap decoder and encoder
|
- Hap decoder and encoder
|
||||||
- DirectDraw Surface image/texture decoder
|
- DirectDraw Surface image/texture decoder
|
||||||
- ssim filter
|
- ssim filter
|
||||||
|
- rewritten ASF demuxer
|
||||||
|
|
||||||
|
|
||||||
version 2.7:
|
version 2.7:
|
||||||
|
|
1
configure
vendored
1
configure
vendored
|
@ -2503,6 +2503,7 @@ nvenc_hevc_encoder_deps="nvenc"
|
||||||
# demuxers / muxers
|
# demuxers / muxers
|
||||||
ac3_demuxer_select="ac3_parser"
|
ac3_demuxer_select="ac3_parser"
|
||||||
asf_demuxer_select="riffdec"
|
asf_demuxer_select="riffdec"
|
||||||
|
asf_o_demuxer_select="riffdec"
|
||||||
asf_muxer_select="riffenc"
|
asf_muxer_select="riffenc"
|
||||||
asf_stream_muxer_select="asf_muxer"
|
asf_stream_muxer_select="asf_muxer"
|
||||||
avi_demuxer_select="riffdec exif"
|
avi_demuxer_select="riffdec exif"
|
||||||
|
|
|
@ -84,6 +84,8 @@ OBJS-$(CONFIG_APNG_MUXER) += apngenc.o
|
||||||
OBJS-$(CONFIG_AQTITLE_DEMUXER) += aqtitledec.o subtitles.o
|
OBJS-$(CONFIG_AQTITLE_DEMUXER) += aqtitledec.o subtitles.o
|
||||||
OBJS-$(CONFIG_ASF_DEMUXER) += asfdec.o asf.o asfcrypt.o \
|
OBJS-$(CONFIG_ASF_DEMUXER) += asfdec.o asf.o asfcrypt.o \
|
||||||
avlanguage.o
|
avlanguage.o
|
||||||
|
OBJS-$(CONFIG_ASF_O_DEMUXER) += asfdec-o.o asf.o asfcrypt.o \
|
||||||
|
avlanguage.o
|
||||||
OBJS-$(CONFIG_ASF_MUXER) += asfenc.o asf.o
|
OBJS-$(CONFIG_ASF_MUXER) += asfenc.o asf.o
|
||||||
OBJS-$(CONFIG_ASS_DEMUXER) += assdec.o subtitles.o
|
OBJS-$(CONFIG_ASS_DEMUXER) += assdec.o subtitles.o
|
||||||
OBJS-$(CONFIG_ASS_MUXER) += assenc.o
|
OBJS-$(CONFIG_ASS_MUXER) += assenc.o
|
||||||
|
|
|
@ -77,6 +77,7 @@ void av_register_all(void)
|
||||||
REGISTER_MUXDEMUX(APNG, apng);
|
REGISTER_MUXDEMUX(APNG, apng);
|
||||||
REGISTER_DEMUXER (AQTITLE, aqtitle);
|
REGISTER_DEMUXER (AQTITLE, aqtitle);
|
||||||
REGISTER_MUXDEMUX(ASF, asf);
|
REGISTER_MUXDEMUX(ASF, asf);
|
||||||
|
REGISTER_DEMUXER (ASF_O, asf_o);
|
||||||
REGISTER_MUXDEMUX(ASS, ass);
|
REGISTER_MUXDEMUX(ASS, ass);
|
||||||
REGISTER_MUXDEMUX(AST, ast);
|
REGISTER_MUXDEMUX(AST, ast);
|
||||||
REGISTER_MUXER (ASF_STREAM, asf_stream);
|
REGISTER_MUXER (ASF_STREAM, asf_stream);
|
||||||
|
|
|
@ -28,38 +28,6 @@
|
||||||
|
|
||||||
#define PACKET_SIZE 3200
|
#define PACKET_SIZE 3200
|
||||||
|
|
||||||
typedef struct ASFPayload {
|
|
||||||
uint8_t type;
|
|
||||||
uint16_t size;
|
|
||||||
} ASFPayload;
|
|
||||||
|
|
||||||
typedef struct ASFStream {
|
|
||||||
int num;
|
|
||||||
unsigned char seq;
|
|
||||||
/* use for reading */
|
|
||||||
AVPacket pkt;
|
|
||||||
int frag_offset;
|
|
||||||
int packet_obj_size;
|
|
||||||
int timestamp;
|
|
||||||
int64_t duration;
|
|
||||||
int skip_to_key;
|
|
||||||
int pkt_clean;
|
|
||||||
|
|
||||||
int ds_span; /* descrambling */
|
|
||||||
int ds_packet_size;
|
|
||||||
int ds_chunk_size;
|
|
||||||
|
|
||||||
int64_t packet_pos;
|
|
||||||
|
|
||||||
uint16_t stream_language_index;
|
|
||||||
|
|
||||||
int palette_changed;
|
|
||||||
uint32_t palette[256];
|
|
||||||
|
|
||||||
int payload_ext_ct;
|
|
||||||
ASFPayload payload[8];
|
|
||||||
} ASFStream;
|
|
||||||
|
|
||||||
typedef struct ASFMainHeader {
|
typedef struct ASFMainHeader {
|
||||||
ff_asf_guid guid; ///< generated by client computer
|
ff_asf_guid guid; ///< generated by client computer
|
||||||
uint64_t file_size; /**< in bytes
|
uint64_t file_size; /**< in bytes
|
||||||
|
|
1702
libavformat/asfdec-o.c
Normal file
1702
libavformat/asfdec-o.c
Normal file
File diff suppressed because it is too large
Load diff
|
@ -39,6 +39,38 @@
|
||||||
#include "asf.h"
|
#include "asf.h"
|
||||||
#include "asfcrypt.h"
|
#include "asfcrypt.h"
|
||||||
|
|
||||||
|
typedef struct ASFPayload {
|
||||||
|
uint8_t type;
|
||||||
|
uint16_t size;
|
||||||
|
} ASFPayload;
|
||||||
|
|
||||||
|
typedef struct ASFStream {
|
||||||
|
int num;
|
||||||
|
unsigned char seq;
|
||||||
|
/* use for reading */
|
||||||
|
AVPacket pkt;
|
||||||
|
int frag_offset;
|
||||||
|
int packet_obj_size;
|
||||||
|
int timestamp;
|
||||||
|
int64_t duration;
|
||||||
|
int skip_to_key;
|
||||||
|
int pkt_clean;
|
||||||
|
|
||||||
|
int ds_span; /* descrambling */
|
||||||
|
int ds_packet_size;
|
||||||
|
int ds_chunk_size;
|
||||||
|
|
||||||
|
int64_t packet_pos;
|
||||||
|
|
||||||
|
uint16_t stream_language_index;
|
||||||
|
|
||||||
|
int palette_changed;
|
||||||
|
uint32_t palette[256];
|
||||||
|
|
||||||
|
int payload_ext_ct;
|
||||||
|
ASFPayload payload[8];
|
||||||
|
} ASFStream;
|
||||||
|
|
||||||
typedef struct ASFContext {
|
typedef struct ASFContext {
|
||||||
const AVClass *class;
|
const AVClass *class;
|
||||||
int asfid2avid[128]; ///< conversion table from asf ID 2 AVStream ID
|
int asfid2avid[128]; ///< conversion table from asf ID 2 AVStream ID
|
||||||
|
|
|
@ -183,6 +183,38 @@
|
||||||
|
|
||||||
#define DATA_HEADER_SIZE 50
|
#define DATA_HEADER_SIZE 50
|
||||||
|
|
||||||
|
typedef struct ASFPayload {
|
||||||
|
uint8_t type;
|
||||||
|
uint16_t size;
|
||||||
|
} ASFPayload;
|
||||||
|
|
||||||
|
typedef struct ASFStream {
|
||||||
|
int num;
|
||||||
|
unsigned char seq;
|
||||||
|
/* use for reading */
|
||||||
|
AVPacket pkt;
|
||||||
|
int frag_offset;
|
||||||
|
int packet_obj_size;
|
||||||
|
int timestamp;
|
||||||
|
int64_t duration;
|
||||||
|
int skip_to_key;
|
||||||
|
int pkt_clean;
|
||||||
|
|
||||||
|
int ds_span; /* descrambling */
|
||||||
|
int ds_packet_size;
|
||||||
|
int ds_chunk_size;
|
||||||
|
|
||||||
|
int64_t packet_pos;
|
||||||
|
|
||||||
|
uint16_t stream_language_index;
|
||||||
|
|
||||||
|
int palette_changed;
|
||||||
|
uint32_t palette[256];
|
||||||
|
|
||||||
|
int payload_ext_ct;
|
||||||
|
ASFPayload payload[8];
|
||||||
|
} ASFStream;
|
||||||
|
|
||||||
typedef struct ASFContext {
|
typedef struct ASFContext {
|
||||||
uint32_t seqno;
|
uint32_t seqno;
|
||||||
int is_streamed;
|
int is_streamed;
|
||||||
|
|
|
@ -30,8 +30,8 @@
|
||||||
#include "libavutil/version.h"
|
#include "libavutil/version.h"
|
||||||
|
|
||||||
#define LIBAVFORMAT_VERSION_MAJOR 56
|
#define LIBAVFORMAT_VERSION_MAJOR 56
|
||||||
#define LIBAVFORMAT_VERSION_MINOR 38
|
#define LIBAVFORMAT_VERSION_MINOR 39
|
||||||
#define LIBAVFORMAT_VERSION_MICRO 102
|
#define LIBAVFORMAT_VERSION_MICRO 100
|
||||||
|
|
||||||
#define LIBAVFORMAT_VERSION_INT AV_VERSION_INT(LIBAVFORMAT_VERSION_MAJOR, \
|
#define LIBAVFORMAT_VERSION_INT AV_VERSION_INT(LIBAVFORMAT_VERSION_MAJOR, \
|
||||||
LIBAVFORMAT_VERSION_MINOR, \
|
LIBAVFORMAT_VERSION_MINOR, \
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue