Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in / Register
Toggle navigation
F
ffmpeg.wasm-core
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Linshizhi
ffmpeg.wasm-core
Commits
48a4ffa7
Commit
48a4ffa7
authored
Feb 05, 2013
by
Diego Biurrun
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
asf: K&R formatting cosmetics
parent
77bcb896
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
552 additions
and
508 deletions
+552
-508
asf.c
libavformat/asf.c
+24
-25
asfcrypt.c
libavformat/asfcrypt.c
+36
-26
asfdec.c
libavformat/asfdec.c
+331
-274
asfenc.c
libavformat/asfenc.c
+161
-183
No files found.
libavformat/asf.c
View file @
48a4ffa7
...
...
@@ -20,7 +20,6 @@
#include "asf.h"
const
ff_asf_guid
ff_asf_header
=
{
0x30
,
0x26
,
0xB2
,
0x75
,
0x8E
,
0x66
,
0xCF
,
0x11
,
0xA6
,
0xD9
,
0x00
,
0xAA
,
0x00
,
0x62
,
0xCE
,
0x6C
};
...
...
@@ -48,7 +47,7 @@ const ff_asf_guid ff_asf_audio_conceal_none = {
};
const
ff_asf_guid
ff_asf_audio_conceal_spread
=
{
0x50
,
0xCD
,
0xC3
,
0xBF
,
0x8F
,
0x61
,
0xCF
,
0x11
,
0x8B
,
0xB2
,
0x00
,
0xAA
,
0x00
,
0xB4
,
0xE2
,
0x20
0x50
,
0xCD
,
0xC3
,
0xBF
,
0x8F
,
0x61
,
0xCF
,
0x11
,
0x8B
,
0xB2
,
0x00
,
0xAA
,
0x00
,
0xB4
,
0xE2
,
0x20
};
const
ff_asf_guid
ff_asf_video_stream
=
{
...
...
@@ -91,31 +90,31 @@ const ff_asf_guid ff_asf_head2_guid = {
};
const
ff_asf_guid
ff_asf_extended_content_header
=
{
0x40
,
0xA4
,
0xD0
,
0xD2
,
0x07
,
0xE3
,
0xD2
,
0x11
,
0x97
,
0xF0
,
0x00
,
0xA0
,
0xC9
,
0x5E
,
0xA8
,
0x50
0x40
,
0xA4
,
0xD0
,
0xD2
,
0x07
,
0xE3
,
0xD2
,
0x11
,
0x97
,
0xF0
,
0x00
,
0xA0
,
0xC9
,
0x5E
,
0xA8
,
0x50
};
const
ff_asf_guid
ff_asf_simple_index_header
=
{
0x90
,
0x08
,
0x00
,
0x33
,
0xB1
,
0xE5
,
0xCF
,
0x11
,
0x89
,
0xF4
,
0x00
,
0xA0
,
0xC9
,
0x03
,
0x49
,
0xCB
0x90
,
0x08
,
0x00
,
0x33
,
0xB1
,
0xE5
,
0xCF
,
0x11
,
0x89
,
0xF4
,
0x00
,
0xA0
,
0xC9
,
0x03
,
0x49
,
0xCB
};
const
ff_asf_guid
ff_asf_ext_stream_embed_stream_header
=
{
0xe2
,
0x65
,
0xfb
,
0x3a
,
0xEF
,
0x47
,
0xF2
,
0x40
,
0xac
,
0x2c
,
0x70
,
0xa9
,
0x0d
,
0x71
,
0xd3
,
0x43
0xe2
,
0x65
,
0xfb
,
0x3a
,
0xEF
,
0x47
,
0xF2
,
0x40
,
0xac
,
0x2c
,
0x70
,
0xa9
,
0x0d
,
0x71
,
0xd3
,
0x43
};
const
ff_asf_guid
ff_asf_ext_stream_audio_stream
=
{
0x9d
,
0x8c
,
0x17
,
0x31
,
0xE1
,
0x03
,
0x28
,
0x45
,
0xb5
,
0x82
,
0x3d
,
0xf9
,
0xdb
,
0x22
,
0xf5
,
0x03
0x9d
,
0x8c
,
0x17
,
0x31
,
0xE1
,
0x03
,
0x28
,
0x45
,
0xb5
,
0x82
,
0x3d
,
0xf9
,
0xdb
,
0x22
,
0xf5
,
0x03
};
const
ff_asf_guid
ff_asf_metadata_header
=
{
0xea
,
0xcb
,
0xf8
,
0xc5
,
0xaf
,
0x5b
,
0x77
,
0x48
,
0x84
,
0x67
,
0xaa
,
0x8c
,
0x44
,
0xfa
,
0x4c
,
0xca
0xea
,
0xcb
,
0xf8
,
0xc5
,
0xaf
,
0x5b
,
0x77
,
0x48
,
0x84
,
0x67
,
0xaa
,
0x8c
,
0x44
,
0xfa
,
0x4c
,
0xca
};
const
ff_asf_guid
ff_asf_marker_header
=
{
0x01
,
0xCD
,
0x87
,
0xF4
,
0x51
,
0xA9
,
0xCF
,
0x11
,
0x8E
,
0xE6
,
0x00
,
0xC0
,
0x0C
,
0x20
,
0x53
,
0x65
0x01
,
0xCD
,
0x87
,
0xF4
,
0x51
,
0xA9
,
0xCF
,
0x11
,
0x8E
,
0xE6
,
0x00
,
0xC0
,
0x0C
,
0x20
,
0x53
,
0x65
};
/* I am not a number !!! This GUID is the one found on the PC used to
generate the stream */
*
generate the stream */
const
ff_asf_guid
ff_asf_my_guid
=
{
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
};
...
...
@@ -138,23 +137,23 @@ const ff_asf_guid ff_asf_digital_signature = {
/* List of official tags at http://msdn.microsoft.com/en-us/library/dd743066(VS.85).aspx */
const
AVMetadataConv
ff_asf_metadata_conv
[]
=
{
{
"WM/AlbumArtist"
,
"album_artist"
},
{
"WM/AlbumTitle"
,
"album"
},
{
"Author"
,
"artist"
},
{
"Description"
,
"comment"
},
{
"WM/Composer"
,
"composer"
},
{
"WM/EncodedBy"
,
"encoded_by"
},
{
"WM/EncodingSettings"
,
"encoder"
},
{
"WM/Genre"
,
"genre"
},
{
"WM/Language"
,
"language"
},
{
"WM/OriginalFilename"
,
"filename"
},
{
"WM/PartOfSet"
,
"disc"
},
{
"WM/Publisher"
,
"publisher"
},
{
"WM/Tool"
,
"encoder"
},
{
"WM/TrackNumber"
,
"track"
},
{
"WM/Track"
,
"track"
},
{
"WM/AlbumArtist"
,
"album_artist"
},
{
"WM/AlbumTitle"
,
"album"
},
{
"Author"
,
"artist"
},
{
"Description"
,
"comment"
},
{
"WM/Composer"
,
"composer"
},
{
"WM/EncodedBy"
,
"encoded_by"
},
{
"WM/EncodingSettings"
,
"encoder"
},
{
"WM/Genre"
,
"genre"
},
{
"WM/Language"
,
"language"
},
{
"WM/OriginalFilename"
,
"filename"
},
{
"WM/PartOfSet"
,
"disc"
},
{
"WM/Publisher"
,
"publisher"
},
{
"WM/Tool"
,
"encoder"
},
{
"WM/TrackNumber"
,
"track"
},
{
"WM/Track"
,
"track"
},
{
"WM/MediaStationCallSign"
,
"service_provider"
},
{
"WM/MediaStationName"
,
"service_name"
},
{
"WM/MediaStationName"
,
"service_name"
},
// { "Year" , "date" }, TODO: conversion year<->date
{
0
}
};
libavformat/asfcrypt.c
View file @
48a4ffa7
...
...
@@ -20,10 +20,10 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
#include "libavutil/common.h"
#include "libavutil/intreadwrite.h"
#include "libavutil/bswap.h"
#include "libavutil/common.h"
#include "libavutil/des.h"
#include "libavutil/intreadwrite.h"
#include "libavutil/rc4.h"
#include "asfcrypt.h"
...
...
@@ -32,7 +32,8 @@
* @param v number to invert, must be odd!
* @return number so that result * v = 1 (mod 2^32)
*/
static
uint32_t
inverse
(
uint32_t
v
)
{
static
uint32_t
inverse
(
uint32_t
v
)
{
// v ^ 3 gives the inverse (mod 16), could also be implemented
// as table etc. (only lowest 4 bits matter!)
uint32_t
inverse
=
v
*
v
*
v
;
...
...
@@ -50,7 +51,8 @@ static uint32_t inverse(uint32_t v) {
* @param keys output key array containing the keys for encryption in
* native endianness
*/
static
void
multiswap_init
(
const
uint8_t
keybuf
[
48
],
uint32_t
keys
[
12
])
{
static
void
multiswap_init
(
const
uint8_t
keybuf
[
48
],
uint32_t
keys
[
12
])
{
int
i
;
for
(
i
=
0
;
i
<
12
;
i
++
)
keys
[
i
]
=
AV_RL32
(
keybuf
+
(
i
<<
2
))
|
1
;
...
...
@@ -61,7 +63,8 @@ static void multiswap_init(const uint8_t keybuf[48], uint32_t keys[12]) {
* the other way round.
* @param keys key array of ints to invert
*/
static
void
multiswap_invert_keys
(
uint32_t
keys
[
12
])
{
static
void
multiswap_invert_keys
(
uint32_t
keys
[
12
])
{
int
i
;
for
(
i
=
0
;
i
<
5
;
i
++
)
keys
[
i
]
=
inverse
(
keys
[
i
]);
...
...
@@ -69,23 +72,25 @@ static void multiswap_invert_keys(uint32_t keys[12]) {
keys
[
i
]
=
inverse
(
keys
[
i
]);
}
static
uint32_t
multiswap_step
(
const
uint32_t
keys
[
12
],
uint32_t
v
)
{
static
uint32_t
multiswap_step
(
const
uint32_t
keys
[
12
],
uint32_t
v
)
{
int
i
;
v
*=
keys
[
0
];
for
(
i
=
1
;
i
<
5
;
i
++
)
{
v
=
(
v
>>
16
)
|
(
v
<<
16
);
v
=
(
v
>>
16
)
|
(
v
<<
16
);
v
*=
keys
[
i
];
}
v
+=
keys
[
5
];
return
v
;
}
static
uint32_t
multiswap_inv_step
(
const
uint32_t
keys
[
12
],
uint32_t
v
)
{
static
uint32_t
multiswap_inv_step
(
const
uint32_t
keys
[
12
],
uint32_t
v
)
{
int
i
;
v
-=
keys
[
5
];
for
(
i
=
4
;
i
>
0
;
i
--
)
{
v
*=
keys
[
i
];
v
=
(
v
>>
16
)
|
(
v
<<
16
);
v
=
(
v
>>
16
)
|
(
v
<<
16
);
}
v
*=
keys
[
0
];
return
v
;
...
...
@@ -99,17 +104,19 @@ static uint32_t multiswap_inv_step(const uint32_t keys[12], uint32_t v) {
* @param data data to encrypt
* @return encrypted data
*/
static
uint64_t
multiswap_enc
(
const
uint32_t
keys
[
12
],
uint64_t
key
,
uint64_t
data
)
{
static
uint64_t
multiswap_enc
(
const
uint32_t
keys
[
12
],
uint64_t
key
,
uint64_t
data
)
{
uint32_t
a
=
data
;
uint32_t
b
=
data
>>
32
;
uint32_t
c
;
uint32_t
tmp
;
a
+=
key
;
tmp
=
multiswap_step
(
keys
,
a
);
b
+=
tmp
;
c
=
(
key
>>
32
)
+
tmp
;
a
+=
key
;
tmp
=
multiswap_step
(
keys
,
a
);
b
+=
tmp
;
c
=
(
key
>>
32
)
+
tmp
;
tmp
=
multiswap_step
(
keys
+
6
,
b
);
c
+=
tmp
;
c
+=
tmp
;
return
((
uint64_t
)
c
<<
32
)
|
tmp
;
}
...
...
@@ -121,25 +128,28 @@ static uint64_t multiswap_enc(const uint32_t keys[12], uint64_t key, uint64_t da
* @param data data to decrypt
* @return decrypted data
*/
static
uint64_t
multiswap_dec
(
const
uint32_t
keys
[
12
],
uint64_t
key
,
uint64_t
data
)
{
static
uint64_t
multiswap_dec
(
const
uint32_t
keys
[
12
],
uint64_t
key
,
uint64_t
data
)
{
uint32_t
a
;
uint32_t
b
;
uint32_t
c
=
data
>>
32
;
uint32_t
c
=
data
>>
32
;
uint32_t
tmp
=
data
;
c
-=
tmp
;
b
=
multiswap_inv_step
(
keys
+
6
,
tmp
);
c
-=
tmp
;
b
=
multiswap_inv_step
(
keys
+
6
,
tmp
);
tmp
=
c
-
(
key
>>
32
);
b
-=
tmp
;
a
=
multiswap_inv_step
(
keys
,
tmp
);
a
-=
key
;
b
-=
tmp
;
a
=
multiswap_inv_step
(
keys
,
tmp
);
a
-=
key
;
return
((
uint64_t
)
b
<<
32
)
|
a
;
}
void
ff_asfcrypt_dec
(
const
uint8_t
key
[
20
],
uint8_t
*
data
,
int
len
)
{
void
ff_asfcrypt_dec
(
const
uint8_t
key
[
20
],
uint8_t
*
data
,
int
len
)
{
struct
AVDES
des
;
struct
AVRC4
rc4
;
int
num_qwords
=
len
>>
3
;
uint8_t
*
qwords
=
data
;
int
num_qwords
=
len
>>
3
;
uint8_t
*
qwords
=
data
;
uint64_t
rc4buff
[
8
]
=
{
0
};
uint64_t
packetkey
;
uint32_t
ms_keys
[
12
];
...
...
@@ -155,7 +165,7 @@ void ff_asfcrypt_dec(const uint8_t key[20], uint8_t *data, int len) {
av_rc4_crypt
(
&
rc4
,
(
uint8_t
*
)
rc4buff
,
NULL
,
sizeof
(
rc4buff
),
NULL
,
1
);
multiswap_init
((
uint8_t
*
)
rc4buff
,
ms_keys
);
packetkey
=
AV_RN64
(
&
qwords
[
num_qwords
*
8
-
8
]);
packetkey
=
AV_RN64
(
&
qwords
[
num_qwords
*
8
-
8
]);
packetkey
^=
rc4buff
[
7
];
av_des_init
(
&
des
,
key
+
12
,
64
,
1
);
av_des_crypt
(
&
des
,
(
uint8_t
*
)
&
packetkey
,
(
uint8_t
*
)
&
packetkey
,
1
,
NULL
,
1
);
...
...
libavformat/asfdec.c
View file @
48a4ffa7
This diff is collapsed.
Click to expand it.
libavformat/asfenc.c
View file @
48a4ffa7
This diff is collapsed.
Click to expand it.
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment