comparison libmpdemux/demux_asf.c @ 25488:74de12ad0c44

Replace LOAD_LE32 etc. by AV_RL32 etc.
author reimar
date Sun, 23 Dec 2007 16:46:24 +0000
parents 81a77832f5fc
children d4fe6e23283e
comparison
equal deleted inserted replaced
25487:81a77832f5fc 25488:74de12ad0c44
11 #include "stream/stream.h" 11 #include "stream/stream.h"
12 #include "asf.h" 12 #include "asf.h"
13 #include "demuxer.h" 13 #include "demuxer.h"
14 14
15 #include "libvo/fastmemcpy.h" 15 #include "libvo/fastmemcpy.h"
16 16 #include "libavutil/intreadwrite.h"
17 /*
18 * Load 16/32-bit values in little endian byte order
19 * from an unaligned address
20 */
21 #ifdef ARCH_X86
22 #define LOAD_LE32(p) (*(unsigned int*)(p))
23 #define LOAD_LE16(p) (*(unsigned short*)(p))
24 #define LOAD_BE32(p) (((unsigned char*)(p))[3] | \
25 ((unsigned char*)(p))[2]<< 8 | \
26 ((unsigned char*)(p))[1]<<16 | \
27 ((unsigned char*)(p))[0]<<24 )
28 #else
29 #define LOAD_LE32(p) (((unsigned char*)(p))[0] | \
30 ((unsigned char*)(p))[1]<< 8 | \
31 ((unsigned char*)(p))[2]<<16 | \
32 ((unsigned char*)(p))[3]<<24 )
33 #define LOAD_LE16(p) (((unsigned char*)(p))[0] | \
34 ((unsigned char*)(p))[1]<<8)
35 #define LOAD_BE32(p) (*(unsigned int*)(p))
36 #endif
37 17
38 // defined at asfheader.c: 18 // defined at asfheader.c:
39 19
40 extern int asf_check_header(demuxer_t *demuxer); 20 extern int asf_check_header(demuxer_t *demuxer);
41 extern int read_asf_header(demuxer_t *demuxer,struct asf_priv* asf); 21 extern int read_asf_header(demuxer_t *demuxer,struct asf_priv* asf);
51 static inline unsigned read_varlen(uint8_t **ptr, int len, int def) { 31 static inline unsigned read_varlen(uint8_t **ptr, int len, int def) {
52 const uint8_t *p = *ptr; 32 const uint8_t *p = *ptr;
53 len &= 3; 33 len &= 3;
54 switch (len) { 34 switch (len) {
55 case 1: *ptr += 1; return *p; 35 case 1: *ptr += 1; return *p;
56 case 2: *ptr += 2; return LOAD_LE16(p); 36 case 2: *ptr += 2; return AV_RL16(p);
57 case 3: *ptr += 4; return LOAD_LE32(p); 37 case 3: *ptr += 4; return AV_RL32(p);
58 } 38 }
59 return def; 39 return def;
60 } 40 }
61 41
62 static void asf_descrambling(unsigned char **src,unsigned len, struct asf_priv* asf){ 42 static void asf_descrambling(unsigned char **src,unsigned len, struct asf_priv* asf){
234 payextsize = asf->vid_repdata_sizes[i]; 214 payextsize = asf->vid_repdata_sizes[i];
235 else 215 else
236 payextsize = asf->aud_repdata_sizes[i]; 216 payextsize = asf->aud_repdata_sizes[i];
237 217
238 if (payextsize == 65535) { 218 if (payextsize == 65535) {
239 payextsize = LOAD_LE16(pi); 219 payextsize = AV_RL16(pi);
240 pi+=2; 220 pi+=2;
241 } 221 }
242 222
243 // if this is the timing info extension then read the payload time 223 // if this is the timing info extension then read the payload time
244 if (i == ext_timing_index) 224 if (i == ext_timing_index)
245 payload_time = (uint64_t) LOAD_LE32(pi+8) | (uint64_t)LOAD_LE32(pi+8 + 4) << 32; 225 payload_time = AV_RL64(pi+8);
246 226
247 // if this is the video frame info extension then 227 // if this is the video frame info extension then
248 // set the keyframe indicator, the 'new frame segment' indicator 228 // set the keyframe indicator, the 'new frame segment' indicator
249 // and (initially) the 'frame time' 229 // and (initially) the 'frame time'
250 if (i == asf->vid_ext_frame_index && id==demux->video->id) { 230 if (i == asf->vid_ext_frame_index && id==demux->video->id) {
407 // Padding (relative) size 387 // Padding (relative) size
408 plen=asf->packetsize-padding; 388 plen=asf->packetsize-padding;
409 } 389 }
410 390
411 // Read time & duration: 391 // Read time & duration:
412 time = LOAD_LE32(p); p+=4; 392 time = AV_RL32(p); p+=4;
413 duration = LOAD_LE16(p); p+=2; 393 duration = AV_RL16(p); p+=2;
414 394
415 // Read payload flags: 395 // Read payload flags:
416 if(flags&1){ 396 if(flags&1){
417 // multiple sub-packets 397 // multiple sub-packets
418 segsizetype=p[0]>>6; 398 segsizetype=p[0]>>6;
466 ++p; // skip PTS delta 446 ++p; // skip PTS delta
467 break; 447 break;
468 default: 448 default:
469 if(rlen>=8){ 449 if(rlen>=8){
470 p+=4; // skip object size 450 p+=4; // skip object size
471 time2=LOAD_LE32(p); // read PTS 451 time2=AV_RL32(p); // read PTS
472 if (asf->asf_is_dvr_ms) 452 if (asf->asf_is_dvr_ms)
473 get_payload_extension_data(demux, &p, streamno, seq, &keyframe, &time2); 453 get_payload_extension_data(demux, &p, streamno, seq, &keyframe, &time2);
474 p+=rlen-4; 454 p+=rlen-4;
475 } else { 455 } else {
476 mp_msg(MSGT_DEMUX,MSGL_V,"unknown segment type (rlen): 0x%02X \n",rlen); 456 mp_msg(MSGT_DEMUX,MSGL_V,"unknown segment type (rlen): 0x%02X \n",rlen);