mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2024-12-23 12:43:46 +02:00
tools: K&R reformatting cosmetics
This commit is contained in:
parent
50639cbefe
commit
4e81b5f517
@ -21,6 +21,7 @@
|
|||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
|
|
||||||
#include "libavformat/avformat.h"
|
#include "libavformat/avformat.h"
|
||||||
|
|
||||||
static int usage(const char *argv0, int ret)
|
static int usage(const char *argv0, int ret)
|
||||||
@ -80,13 +81,14 @@ int main(int argc, char **argv)
|
|||||||
stream_pos += n;
|
stream_pos += n;
|
||||||
if (bps) {
|
if (bps) {
|
||||||
avio_flush(output);
|
avio_flush(output);
|
||||||
while ((av_gettime() - start_time)*bps/AV_TIME_BASE < stream_pos)
|
while ((av_gettime() - start_time) * bps / AV_TIME_BASE < stream_pos)
|
||||||
usleep(50*1000);
|
usleep(50 * 1000);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
avio_flush(output);
|
avio_flush(output);
|
||||||
avio_close(output);
|
avio_close(output);
|
||||||
|
|
||||||
fail:
|
fail:
|
||||||
avio_close(input);
|
avio_close(input);
|
||||||
avformat_network_deinit();
|
avformat_network_deinit();
|
||||||
|
@ -26,46 +26,42 @@ int main(int argc, char *argv[])
|
|||||||
z_stream zstream;
|
z_stream zstream;
|
||||||
struct stat statbuf;
|
struct stat statbuf;
|
||||||
|
|
||||||
if (argc < 3)
|
if (argc < 3) {
|
||||||
{
|
|
||||||
printf("Usage: %s <infile.swf> <outfile.swf>\n", argv[0]);
|
printf("Usage: %s <infile.swf> <outfile.swf>\n", argv[0]);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
fd_in = open(argv[1], O_RDONLY);
|
fd_in = open(argv[1], O_RDONLY);
|
||||||
if (fd_in < 0)
|
if (fd_in < 0) {
|
||||||
{
|
|
||||||
perror("Error opening input file");
|
perror("Error opening input file");
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
fd_out = open(argv[2], O_WRONLY|O_CREAT, 00644);
|
fd_out = open(argv[2], O_WRONLY | O_CREAT, 00644);
|
||||||
if (fd_out < 0)
|
if (fd_out < 0) {
|
||||||
{
|
|
||||||
perror("Error opening output file");
|
perror("Error opening output file");
|
||||||
close(fd_in);
|
close(fd_in);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (read(fd_in, &buf_in, 8) != 8)
|
if (read(fd_in, &buf_in, 8) != 8) {
|
||||||
{
|
|
||||||
printf("Header error\n");
|
printf("Header error\n");
|
||||||
close(fd_in);
|
close(fd_in);
|
||||||
close(fd_out);
|
close(fd_out);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (buf_in[0] != 'C' || buf_in[1] != 'W' || buf_in[2] != 'S')
|
if (buf_in[0] != 'C' || buf_in[1] != 'W' || buf_in[2] != 'S') {
|
||||||
{
|
|
||||||
printf("Not a compressed flash file\n");
|
printf("Not a compressed flash file\n");
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
fstat(fd_in, &statbuf);
|
fstat(fd_in, &statbuf);
|
||||||
comp_len = statbuf.st_size;
|
comp_len = statbuf.st_size;
|
||||||
uncomp_len = buf_in[4] | (buf_in[5] << 8) | (buf_in[6] << 16) | (buf_in[7] << 24);
|
uncomp_len = buf_in[4] | (buf_in[5] << 8) | (buf_in[6] << 16) | (buf_in[7] << 24);
|
||||||
|
|
||||||
printf("Compressed size: %d Uncompressed size: %d\n", comp_len-4, uncomp_len-4);
|
printf("Compressed size: %d Uncompressed size: %d\n",
|
||||||
|
comp_len - 4, uncomp_len - 4);
|
||||||
|
|
||||||
// write out modified header
|
// write out modified header
|
||||||
buf_in[0] = 'F';
|
buf_in[0] = 'F';
|
||||||
@ -75,36 +71,35 @@ int main(int argc, char *argv[])
|
|||||||
}
|
}
|
||||||
|
|
||||||
zstream.zalloc = NULL;
|
zstream.zalloc = NULL;
|
||||||
zstream.zfree = NULL;
|
zstream.zfree = NULL;
|
||||||
zstream.opaque = NULL;
|
zstream.opaque = NULL;
|
||||||
inflateInit(&zstream);
|
inflateInit(&zstream);
|
||||||
|
|
||||||
for (i = 0; i < comp_len-8;)
|
for (i = 0; i < comp_len - 8;) {
|
||||||
{
|
|
||||||
int ret, len = read(fd_in, &buf_in, 1024);
|
int ret, len = read(fd_in, &buf_in, 1024);
|
||||||
|
|
||||||
dbgprintf("read %d bytes\n", len);
|
dbgprintf("read %d bytes\n", len);
|
||||||
|
|
||||||
last_out = zstream.total_out;
|
last_out = zstream.total_out;
|
||||||
|
|
||||||
zstream.next_in = &buf_in[0];
|
zstream.next_in = &buf_in[0];
|
||||||
zstream.avail_in = len;
|
zstream.avail_in = len;
|
||||||
zstream.next_out = &buf_out[0];
|
zstream.next_out = &buf_out[0];
|
||||||
zstream.avail_out = 65536;
|
zstream.avail_out = 65536;
|
||||||
|
|
||||||
ret = inflate(&zstream, Z_SYNC_FLUSH);
|
ret = inflate(&zstream, Z_SYNC_FLUSH);
|
||||||
if (ret != Z_STREAM_END && ret != Z_OK)
|
if (ret != Z_STREAM_END && ret != Z_OK) {
|
||||||
{
|
|
||||||
printf("Error while decompressing: %d\n", ret);
|
printf("Error while decompressing: %d\n", ret);
|
||||||
inflateEnd(&zstream);
|
inflateEnd(&zstream);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
dbgprintf("a_in: %d t_in: %lu a_out: %d t_out: %lu -- %lu out\n",
|
dbgprintf("a_in: %d t_in: %lu a_out: %d t_out: %lu -- %lu out\n",
|
||||||
zstream.avail_in, zstream.total_in, zstream.avail_out, zstream.total_out,
|
zstream.avail_in, zstream.total_in, zstream.avail_out,
|
||||||
zstream.total_out-last_out);
|
zstream.total_out, zstream.total_out - last_out);
|
||||||
|
|
||||||
if (write(fd_out, &buf_out, zstream.total_out - last_out) < zstream.total_out - last_out) {
|
if (write(fd_out, &buf_out, zstream.total_out - last_out) <
|
||||||
|
zstream.total_out - last_out) {
|
||||||
perror("Error writing output file");
|
perror("Error writing output file");
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
@ -115,15 +110,14 @@ int main(int argc, char *argv[])
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (zstream.total_out != uncomp_len-8)
|
if (zstream.total_out != uncomp_len - 8) {
|
||||||
{
|
|
||||||
printf("Size mismatch (%lu != %d), updating header...\n",
|
printf("Size mismatch (%lu != %d), updating header...\n",
|
||||||
zstream.total_out, uncomp_len-8);
|
zstream.total_out, uncomp_len - 8);
|
||||||
|
|
||||||
buf_in[0] = (zstream.total_out+8) & 0xff;
|
buf_in[0] = (zstream.total_out + 8) & 0xff;
|
||||||
buf_in[1] = ((zstream.total_out+8) >> 8) & 0xff;
|
buf_in[1] = ((zstream.total_out + 8) >> 8) & 0xff;
|
||||||
buf_in[2] = ((zstream.total_out+8) >> 16) & 0xff;
|
buf_in[2] = ((zstream.total_out + 8) >> 16) & 0xff;
|
||||||
buf_in[3] = ((zstream.total_out+8) >> 24) & 0xff;
|
buf_in[3] = ((zstream.total_out + 8) >> 24) & 0xff;
|
||||||
|
|
||||||
lseek(fd_out, 4, SEEK_SET);
|
lseek(fd_out, 4, SEEK_SET);
|
||||||
if (write(fd_out, &buf_in, 4) < 4) {
|
if (write(fd_out, &buf_in, 4) < 4) {
|
||||||
|
@ -63,19 +63,25 @@ static void print_digraph(FILE *outfile, AVFilterGraph *graph)
|
|||||||
char dst_filter_ctx_label[128];
|
char dst_filter_ctx_label[128];
|
||||||
const AVFilterContext *dst_filter_ctx = link->dst;
|
const AVFilterContext *dst_filter_ctx = link->dst;
|
||||||
|
|
||||||
snprintf(dst_filter_ctx_label, sizeof(dst_filter_ctx_label), "%s (%s)",
|
snprintf(dst_filter_ctx_label, sizeof(dst_filter_ctx_label),
|
||||||
|
"%s (%s)",
|
||||||
dst_filter_ctx->name,
|
dst_filter_ctx->name,
|
||||||
dst_filter_ctx->filter->name);
|
dst_filter_ctx->filter->name);
|
||||||
|
|
||||||
fprintf(outfile, "\"%s\" -> \"%s\"", filter_ctx_label, dst_filter_ctx_label);
|
fprintf(outfile, "\"%s\" -> \"%s\"",
|
||||||
|
filter_ctx_label, dst_filter_ctx_label);
|
||||||
if (link->type == AVMEDIA_TYPE_VIDEO) {
|
if (link->type == AVMEDIA_TYPE_VIDEO) {
|
||||||
fprintf(outfile, " [ label= \"fmt:%s w:%d h:%d tb:%d/%d\" ]",
|
fprintf(outfile,
|
||||||
|
" [ label= \"fmt:%s w:%d h:%d tb:%d/%d\" ]",
|
||||||
av_pix_fmt_descriptors[link->format].name,
|
av_pix_fmt_descriptors[link->format].name,
|
||||||
link->w, link->h, link->time_base.num, link->time_base.den);
|
link->w, link->h, link->time_base.num,
|
||||||
|
link->time_base.den);
|
||||||
} else if (link->type == AVMEDIA_TYPE_AUDIO) {
|
} else if (link->type == AVMEDIA_TYPE_AUDIO) {
|
||||||
char buf[255];
|
char buf[255];
|
||||||
av_get_channel_layout_string(buf, sizeof(buf), -1, link->channel_layout);
|
av_get_channel_layout_string(buf, sizeof(buf), -1,
|
||||||
fprintf(outfile, " [ label= \"fmt:%s sr:%"PRId64" cl:%s\" ]",
|
link->channel_layout);
|
||||||
|
fprintf(outfile,
|
||||||
|
" [ label= \"fmt:%s sr:%"PRId64 " cl:%s\" ]",
|
||||||
av_get_sample_fmt_name(link->format),
|
av_get_sample_fmt_name(link->format),
|
||||||
link->sample_rate, buf);
|
link->sample_rate, buf);
|
||||||
}
|
}
|
||||||
@ -89,17 +95,17 @@ static void print_digraph(FILE *outfile, AVFilterGraph *graph)
|
|||||||
int main(int argc, char **argv)
|
int main(int argc, char **argv)
|
||||||
{
|
{
|
||||||
const char *outfilename = NULL;
|
const char *outfilename = NULL;
|
||||||
const char *infilename = NULL;
|
const char *infilename = NULL;
|
||||||
FILE *outfile = NULL;
|
FILE *outfile = NULL;
|
||||||
FILE *infile = NULL;
|
FILE *infile = NULL;
|
||||||
char *graph_string = NULL;
|
char *graph_string = NULL;
|
||||||
AVFilterGraph *graph = av_mallocz(sizeof(AVFilterGraph));
|
AVFilterGraph *graph = av_mallocz(sizeof(AVFilterGraph));
|
||||||
char c;
|
char c;
|
||||||
|
|
||||||
av_log_set_level(AV_LOG_DEBUG);
|
av_log_set_level(AV_LOG_DEBUG);
|
||||||
|
|
||||||
while ((c = getopt(argc, argv, "hi:o:")) != -1) {
|
while ((c = getopt(argc, argv, "hi:o:")) != -1) {
|
||||||
switch(c) {
|
switch (c) {
|
||||||
case 'h':
|
case 'h':
|
||||||
usage();
|
usage();
|
||||||
return 0;
|
return 0;
|
||||||
@ -118,7 +124,8 @@ int main(int argc, char **argv)
|
|||||||
infilename = "/dev/stdin";
|
infilename = "/dev/stdin";
|
||||||
infile = fopen(infilename, "r");
|
infile = fopen(infilename, "r");
|
||||||
if (!infile) {
|
if (!infile) {
|
||||||
fprintf(stderr, "Impossible to open input file '%s': %s\n", infilename, strerror(errno));
|
fprintf(stderr, "Impossible to open input file '%s': %s\n",
|
||||||
|
infilename, strerror(errno));
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -126,7 +133,8 @@ int main(int argc, char **argv)
|
|||||||
outfilename = "/dev/stdout";
|
outfilename = "/dev/stdout";
|
||||||
outfile = fopen(outfilename, "w");
|
outfile = fopen(outfilename, "w");
|
||||||
if (!outfile) {
|
if (!outfile) {
|
||||||
fprintf(stderr, "Impossible to open output file '%s': %s\n", outfilename, strerror(errno));
|
fprintf(stderr, "Impossible to open output file '%s': %s\n",
|
||||||
|
outfilename, strerror(errno));
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -141,7 +149,7 @@ int main(int argc, char **argv)
|
|||||||
struct line *new_line = av_malloc(sizeof(struct line));
|
struct line *new_line = av_malloc(sizeof(struct line));
|
||||||
count += strlen(last_line->data);
|
count += strlen(last_line->data);
|
||||||
last_line->next = new_line;
|
last_line->next = new_line;
|
||||||
last_line = new_line;
|
last_line = new_line;
|
||||||
}
|
}
|
||||||
last_line->next = NULL;
|
last_line->next = NULL;
|
||||||
|
|
||||||
|
@ -35,6 +35,7 @@
|
|||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <sys/stat.h>
|
#include <sys/stat.h>
|
||||||
|
|
||||||
#include "libavformat/avformat.h"
|
#include "libavformat/avformat.h"
|
||||||
#include "libavutil/intreadwrite.h"
|
#include "libavutil/intreadwrite.h"
|
||||||
#include "libavutil/mathematics.h"
|
#include "libavutil/mathematics.h"
|
||||||
@ -82,7 +83,7 @@ static int copy_tag(AVIOContext *in, AVIOContext *out, int32_t tag_name)
|
|||||||
int32_t size, tag;
|
int32_t size, tag;
|
||||||
|
|
||||||
size = avio_rb32(in);
|
size = avio_rb32(in);
|
||||||
tag = avio_rb32(in);
|
tag = avio_rb32(in);
|
||||||
avio_wb32(out, size);
|
avio_wb32(out, size);
|
||||||
avio_wb32(out, tag);
|
avio_wb32(out, tag);
|
||||||
if (tag != tag_name)
|
if (tag != tag_name)
|
||||||
@ -123,7 +124,7 @@ static int write_fragments(struct VideoFiles *files, int start_index,
|
|||||||
|
|
||||||
for (i = start_index; i < files->nb_files; i++) {
|
for (i = start_index; i < files->nb_files; i++) {
|
||||||
struct VideoFile *vf = files->files[i];
|
struct VideoFile *vf = files->files[i];
|
||||||
const char *type = vf->is_video ? "video" : "audio";
|
const char *type = vf->is_video ? "video" : "audio";
|
||||||
snprintf(dirname, sizeof(dirname), "QualityLevels(%d)", vf->bitrate);
|
snprintf(dirname, sizeof(dirname), "QualityLevels(%d)", vf->bitrate);
|
||||||
mkdir(dirname, 0777);
|
mkdir(dirname, 0777);
|
||||||
for (j = 0; j < vf->chunks; j++) {
|
for (j = 0; j < vf->chunks; j++) {
|
||||||
@ -140,7 +141,7 @@ static int read_tfra(struct VideoFiles *files, int start_index, AVIOContext *f)
|
|||||||
{
|
{
|
||||||
int ret = AVERROR_EOF, track_id;
|
int ret = AVERROR_EOF, track_id;
|
||||||
int version, fieldlength, i, j;
|
int version, fieldlength, i, j;
|
||||||
int64_t pos = avio_tell(f);
|
int64_t pos = avio_tell(f);
|
||||||
uint32_t size = avio_rb32(f);
|
uint32_t size = avio_rb32(f);
|
||||||
struct VideoFile *vf = NULL;
|
struct VideoFile *vf = NULL;
|
||||||
|
|
||||||
@ -149,17 +150,16 @@ static int read_tfra(struct VideoFiles *files, int start_index, AVIOContext *f)
|
|||||||
version = avio_r8(f);
|
version = avio_r8(f);
|
||||||
avio_rb24(f);
|
avio_rb24(f);
|
||||||
track_id = avio_rb32(f); /* track id */
|
track_id = avio_rb32(f); /* track id */
|
||||||
for (i = start_index; i < files->nb_files && !vf; i++) {
|
for (i = start_index; i < files->nb_files && !vf; i++)
|
||||||
if (files->files[i]->track_id == track_id)
|
if (files->files[i]->track_id == track_id)
|
||||||
vf = files->files[i];
|
vf = files->files[i];
|
||||||
}
|
|
||||||
if (!vf) {
|
if (!vf) {
|
||||||
/* Ok, continue parsing the next atom */
|
/* Ok, continue parsing the next atom */
|
||||||
ret = 0;
|
ret = 0;
|
||||||
goto fail;
|
goto fail;
|
||||||
}
|
}
|
||||||
fieldlength = avio_rb32(f);
|
fieldlength = avio_rb32(f);
|
||||||
vf->chunks = avio_rb32(f);
|
vf->chunks = avio_rb32(f);
|
||||||
vf->offsets = av_mallocz(sizeof(*vf->offsets) * vf->chunks);
|
vf->offsets = av_mallocz(sizeof(*vf->offsets) * vf->chunks);
|
||||||
if (!vf->offsets) {
|
if (!vf->offsets) {
|
||||||
ret = AVERROR(ENOMEM);
|
ret = AVERROR(ENOMEM);
|
||||||
@ -167,10 +167,10 @@ static int read_tfra(struct VideoFiles *files, int start_index, AVIOContext *f)
|
|||||||
}
|
}
|
||||||
for (i = 0; i < vf->chunks; i++) {
|
for (i = 0; i < vf->chunks; i++) {
|
||||||
if (version == 1) {
|
if (version == 1) {
|
||||||
vf->offsets[i].time = avio_rb64(f);
|
vf->offsets[i].time = avio_rb64(f);
|
||||||
vf->offsets[i].offset = avio_rb64(f);
|
vf->offsets[i].offset = avio_rb64(f);
|
||||||
} else {
|
} else {
|
||||||
vf->offsets[i].time = avio_rb32(f);
|
vf->offsets[i].time = avio_rb32(f);
|
||||||
vf->offsets[i].offset = avio_rb32(f);
|
vf->offsets[i].offset = avio_rb32(f);
|
||||||
}
|
}
|
||||||
for (j = 0; j < ((fieldlength >> 4) & 3) + 1; j++)
|
for (j = 0; j < ((fieldlength >> 4) & 3) + 1; j++)
|
||||||
@ -187,6 +187,7 @@ static int read_tfra(struct VideoFiles *files, int start_index, AVIOContext *f)
|
|||||||
vf->offsets[vf->chunks - 1].duration = vf->duration -
|
vf->offsets[vf->chunks - 1].duration = vf->duration -
|
||||||
vf->offsets[vf->chunks - 1].time;
|
vf->offsets[vf->chunks - 1].time;
|
||||||
ret = 0;
|
ret = 0;
|
||||||
|
|
||||||
fail:
|
fail:
|
||||||
avio_seek(f, pos + size, SEEK_SET);
|
avio_seek(f, pos + size, SEEK_SET);
|
||||||
return ret;
|
return ret;
|
||||||
@ -224,7 +225,7 @@ fail:
|
|||||||
static int get_private_data(struct VideoFile *vf, AVCodecContext *codec)
|
static int get_private_data(struct VideoFile *vf, AVCodecContext *codec)
|
||||||
{
|
{
|
||||||
vf->codec_private_size = codec->extradata_size;
|
vf->codec_private_size = codec->extradata_size;
|
||||||
vf->codec_private = av_mallocz(codec->extradata_size);
|
vf->codec_private = av_mallocz(codec->extradata_size);
|
||||||
if (!vf->codec_private)
|
if (!vf->codec_private)
|
||||||
return AVERROR(ENOMEM);
|
return AVERROR(ENOMEM);
|
||||||
memcpy(vf->codec_private, codec->extradata, codec->extradata_size);
|
memcpy(vf->codec_private, codec->extradata, codec->extradata_size);
|
||||||
@ -254,6 +255,7 @@ static int get_video_private_data(struct VideoFile *vf, AVCodecContext *codec)
|
|||||||
avio_wb32(io, 0x00000001);
|
avio_wb32(io, 0x00000001);
|
||||||
avio_write(io, &codec->extradata[11 + sps_size], pps_size);
|
avio_write(io, &codec->extradata[11 + sps_size], pps_size);
|
||||||
err = 0;
|
err = 0;
|
||||||
|
|
||||||
fail:
|
fail:
|
||||||
vf->codec_private_size = avio_close_dyn_buf(io, &vf->codec_private);
|
vf->codec_private_size = avio_close_dyn_buf(io, &vf->codec_private);
|
||||||
return err;
|
return err;
|
||||||
@ -291,24 +293,25 @@ static int handle_file(struct VideoFiles *files, const char *file, int split)
|
|||||||
AVStream *st = ctx->streams[i];
|
AVStream *st = ctx->streams[i];
|
||||||
vf = av_mallocz(sizeof(*vf));
|
vf = av_mallocz(sizeof(*vf));
|
||||||
files->files = av_realloc(files->files,
|
files->files = av_realloc(files->files,
|
||||||
sizeof(*files->files)*(files->nb_files + 1));
|
sizeof(*files->files) * (files->nb_files + 1));
|
||||||
files->files[files->nb_files] = vf;
|
files->files[files->nb_files] = vf;
|
||||||
|
|
||||||
vf->name = file;
|
vf->name = file;
|
||||||
if ((ptr = strrchr(file, '/')) != NULL)
|
if ((ptr = strrchr(file, '/')) != NULL)
|
||||||
vf->name = ptr + 1;
|
vf->name = ptr + 1;
|
||||||
|
|
||||||
vf->bitrate = st->codec->bit_rate;
|
vf->bitrate = st->codec->bit_rate;
|
||||||
vf->track_id = st->id;
|
vf->track_id = st->id;
|
||||||
vf->timescale = st->time_base.den;
|
vf->timescale = st->time_base.den;
|
||||||
vf->duration = av_rescale_rnd(ctx->duration, vf->timescale,
|
vf->duration = av_rescale_rnd(ctx->duration, vf->timescale,
|
||||||
AV_TIME_BASE, AV_ROUND_UP);
|
AV_TIME_BASE, AV_ROUND_UP);
|
||||||
vf->is_audio = st->codec->codec_type == AVMEDIA_TYPE_AUDIO;
|
vf->is_audio = st->codec->codec_type == AVMEDIA_TYPE_AUDIO;
|
||||||
vf->is_video = st->codec->codec_type == AVMEDIA_TYPE_VIDEO;
|
vf->is_video = st->codec->codec_type == AVMEDIA_TYPE_VIDEO;
|
||||||
|
|
||||||
if (!vf->is_audio && !vf->is_video) {
|
if (!vf->is_audio && !vf->is_video) {
|
||||||
fprintf(stderr, "Track %d in %s is neither video nor audio, "
|
fprintf(stderr,
|
||||||
"skipping\n", vf->track_id, file);
|
"Track %d in %s is neither video nor audio, skipping\n",
|
||||||
|
vf->track_id, file);
|
||||||
av_freep(&files->files[files->nb_files]);
|
av_freep(&files->files[files->nb_files]);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
@ -317,15 +320,15 @@ static int handle_file(struct VideoFiles *files, const char *file, int split)
|
|||||||
if (files->audio_file < 0)
|
if (files->audio_file < 0)
|
||||||
files->audio_file = files->nb_files;
|
files->audio_file = files->nb_files;
|
||||||
files->nb_audio_files++;
|
files->nb_audio_files++;
|
||||||
vf->channels = st->codec->channels;
|
vf->channels = st->codec->channels;
|
||||||
vf->sample_rate = st->codec->sample_rate;
|
vf->sample_rate = st->codec->sample_rate;
|
||||||
if (st->codec->codec_id == CODEC_ID_AAC) {
|
if (st->codec->codec_id == CODEC_ID_AAC) {
|
||||||
vf->fourcc = "AACL";
|
vf->fourcc = "AACL";
|
||||||
vf->tag = 255;
|
vf->tag = 255;
|
||||||
vf->blocksize = 4;
|
vf->blocksize = 4;
|
||||||
} else if (st->codec->codec_id == CODEC_ID_WMAPRO) {
|
} else if (st->codec->codec_id == CODEC_ID_WMAPRO) {
|
||||||
vf->fourcc = "WMAP";
|
vf->fourcc = "WMAP";
|
||||||
vf->tag = st->codec->codec_tag;
|
vf->tag = st->codec->codec_tag;
|
||||||
vf->blocksize = st->codec->block_align;
|
vf->blocksize = st->codec->block_align;
|
||||||
}
|
}
|
||||||
get_private_data(vf, st->codec);
|
get_private_data(vf, st->codec);
|
||||||
@ -334,7 +337,7 @@ static int handle_file(struct VideoFiles *files, const char *file, int split)
|
|||||||
if (files->video_file < 0)
|
if (files->video_file < 0)
|
||||||
files->video_file = files->nb_files;
|
files->video_file = files->nb_files;
|
||||||
files->nb_video_files++;
|
files->nb_video_files++;
|
||||||
vf->width = st->codec->width;
|
vf->width = st->codec->width;
|
||||||
vf->height = st->codec->height;
|
vf->height = st->codec->height;
|
||||||
if (st->codec->codec_id == CODEC_ID_H264)
|
if (st->codec->codec_id == CODEC_ID_H264)
|
||||||
vf->fourcc = "H264";
|
vf->fourcc = "H264";
|
||||||
@ -379,7 +382,7 @@ static void output_server_manifest(struct VideoFiles *files,
|
|||||||
fprintf(out, "\t\t<switch>\n");
|
fprintf(out, "\t\t<switch>\n");
|
||||||
for (i = 0; i < files->nb_files; i++) {
|
for (i = 0; i < files->nb_files; i++) {
|
||||||
struct VideoFile *vf = files->files[i];
|
struct VideoFile *vf = files->files[i];
|
||||||
const char *type = vf->is_video ? "video" : "audio";
|
const char *type = vf->is_video ? "video" : "audio";
|
||||||
fprintf(out, "\t\t\t<%s src=\"%s\" systemBitrate=\"%d\">\n",
|
fprintf(out, "\t\t\t<%s src=\"%s\" systemBitrate=\"%d\">\n",
|
||||||
type, vf->name, vf->bitrate);
|
type, vf->name, vf->bitrate);
|
||||||
fprintf(out, "\t\t\t\t<param name=\"trackID\" value=\"%d\" "
|
fprintf(out, "\t\t\t\t<param name=\"trackID\" value=\"%d\" "
|
||||||
@ -410,22 +413,24 @@ static void output_client_manifest(struct VideoFiles *files,
|
|||||||
}
|
}
|
||||||
fprintf(out, "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n");
|
fprintf(out, "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n");
|
||||||
fprintf(out, "<SmoothStreamingMedia MajorVersion=\"2\" MinorVersion=\"0\" "
|
fprintf(out, "<SmoothStreamingMedia MajorVersion=\"2\" MinorVersion=\"0\" "
|
||||||
"Duration=\"%"PRId64"\">\n", files->duration * 10);
|
"Duration=\"%"PRId64 "\">\n", files->duration * 10);
|
||||||
if (files->video_file >= 0) {
|
if (files->video_file >= 0) {
|
||||||
struct VideoFile *vf = files->files[files->video_file];
|
struct VideoFile *vf = files->files[files->video_file];
|
||||||
int index = 0;
|
int index = 0;
|
||||||
fprintf(out, "\t<StreamIndex Type=\"video\" QualityLevels=\"%d\" "
|
fprintf(out,
|
||||||
"Chunks=\"%d\" "
|
"\t<StreamIndex Type=\"video\" QualityLevels=\"%d\" "
|
||||||
"Url=\"QualityLevels({bitrate})/Fragments(video={start time})\">\n",
|
"Chunks=\"%d\" "
|
||||||
files->nb_video_files, vf->chunks);
|
"Url=\"QualityLevels({bitrate})/Fragments(video={start time})\">\n",
|
||||||
|
files->nb_video_files, vf->chunks);
|
||||||
for (i = 0; i < files->nb_files; i++) {
|
for (i = 0; i < files->nb_files; i++) {
|
||||||
vf = files->files[i];
|
vf = files->files[i];
|
||||||
if (!vf->is_video)
|
if (!vf->is_video)
|
||||||
continue;
|
continue;
|
||||||
fprintf(out, "\t\t<QualityLevel Index=\"%d\" Bitrate=\"%d\" "
|
fprintf(out,
|
||||||
"FourCC=\"%s\" MaxWidth=\"%d\" MaxHeight=\"%d\" "
|
"\t\t<QualityLevel Index=\"%d\" Bitrate=\"%d\" "
|
||||||
"CodecPrivateData=\"",
|
"FourCC=\"%s\" MaxWidth=\"%d\" MaxHeight=\"%d\" "
|
||||||
index, vf->bitrate, vf->fourcc, vf->width, vf->height);
|
"CodecPrivateData=\"",
|
||||||
|
index, vf->bitrate, vf->fourcc, vf->width, vf->height);
|
||||||
for (j = 0; j < vf->codec_private_size; j++)
|
for (j = 0; j < vf->codec_private_size; j++)
|
||||||
fprintf(out, "%02X", vf->codec_private[j]);
|
fprintf(out, "%02X", vf->codec_private[j]);
|
||||||
fprintf(out, "\" />\n");
|
fprintf(out, "\" />\n");
|
||||||
@ -440,20 +445,22 @@ static void output_client_manifest(struct VideoFiles *files,
|
|||||||
if (files->audio_file >= 0) {
|
if (files->audio_file >= 0) {
|
||||||
struct VideoFile *vf = files->files[files->audio_file];
|
struct VideoFile *vf = files->files[files->audio_file];
|
||||||
int index = 0;
|
int index = 0;
|
||||||
fprintf(out, "\t<StreamIndex Type=\"audio\" QualityLevels=\"%d\" "
|
fprintf(out,
|
||||||
"Chunks=\"%d\" "
|
"\t<StreamIndex Type=\"audio\" QualityLevels=\"%d\" "
|
||||||
"Url=\"QualityLevels({bitrate})/Fragments(audio={start time})\">\n",
|
"Chunks=\"%d\" "
|
||||||
files->nb_audio_files, vf->chunks);
|
"Url=\"QualityLevels({bitrate})/Fragments(audio={start time})\">\n",
|
||||||
|
files->nb_audio_files, vf->chunks);
|
||||||
for (i = 0; i < files->nb_files; i++) {
|
for (i = 0; i < files->nb_files; i++) {
|
||||||
vf = files->files[i];
|
vf = files->files[i];
|
||||||
if (!vf->is_audio)
|
if (!vf->is_audio)
|
||||||
continue;
|
continue;
|
||||||
fprintf(out, "\t\t<QualityLevel Index=\"%d\" Bitrate=\"%d\" "
|
fprintf(out,
|
||||||
"FourCC=\"%s\" SamplingRate=\"%d\" Channels=\"%d\" "
|
"\t\t<QualityLevel Index=\"%d\" Bitrate=\"%d\" "
|
||||||
"BitsPerSample=\"16\" PacketSize=\"%d\" "
|
"FourCC=\"%s\" SamplingRate=\"%d\" Channels=\"%d\" "
|
||||||
"AudioTag=\"%d\" CodecPrivateData=\"",
|
"BitsPerSample=\"16\" PacketSize=\"%d\" "
|
||||||
index, vf->bitrate, vf->fourcc, vf->sample_rate,
|
"AudioTag=\"%d\" CodecPrivateData=\"",
|
||||||
vf->channels, vf->blocksize, vf->tag);
|
index, vf->bitrate, vf->fourcc, vf->sample_rate,
|
||||||
|
vf->channels, vf->blocksize, vf->tag);
|
||||||
for (j = 0; j < vf->codec_private_size; j++)
|
for (j = 0; j < vf->codec_private_size; j++)
|
||||||
fprintf(out, "%02X", vf->codec_private[j]);
|
fprintf(out, "%02X", vf->codec_private[j]);
|
||||||
fprintf(out, "\" />\n");
|
fprintf(out, "\" />\n");
|
||||||
|
@ -50,11 +50,13 @@ int main(int argc, char **argv)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (avfilter_open(&filter_ctx, filter, NULL) < 0) {
|
if (avfilter_open(&filter_ctx, filter, NULL) < 0) {
|
||||||
fprintf(stderr, "Inpossible to open filter with name '%s'\n", filter_name);
|
fprintf(stderr, "Inpossible to open filter with name '%s'\n",
|
||||||
|
filter_name);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
if (avfilter_init_filter(filter_ctx, filter_args, NULL) < 0) {
|
if (avfilter_init_filter(filter_ctx, filter_args, NULL) < 0) {
|
||||||
fprintf(stderr, "Impossible to init filter '%s' with arguments '%s'\n", filter_name, filter_args);
|
fprintf(stderr, "Impossible to init filter '%s' with arguments '%s'\n",
|
||||||
|
filter_name, filter_args);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -24,9 +24,10 @@
|
|||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
|
|
||||||
#include "libavformat/avformat.h"
|
#include "libavformat/avformat.h"
|
||||||
|
|
||||||
#define PKTFILESUFF "_%08"PRId64"_%02d_%010"PRId64"_%06d_%c.bin"
|
#define PKTFILESUFF "_%08" PRId64 "_%02d_%010" PRId64 "_%06d_%c.bin"
|
||||||
|
|
||||||
#undef strcat
|
#undef strcat
|
||||||
|
|
||||||
@ -46,10 +47,10 @@ int main(int argc, char **argv)
|
|||||||
char pktfilename[PATH_MAX];
|
char pktfilename[PATH_MAX];
|
||||||
AVFormatContext *fctx = NULL;
|
AVFormatContext *fctx = NULL;
|
||||||
AVPacket pkt;
|
AVPacket pkt;
|
||||||
int64_t pktnum = 0;
|
int64_t pktnum = 0;
|
||||||
int64_t maxpkts = 0;
|
int64_t maxpkts = 0;
|
||||||
int donotquit = 0;
|
int donotquit = 0;
|
||||||
int nowrite = 0;
|
int nowrite = 0;
|
||||||
int err;
|
int err;
|
||||||
|
|
||||||
if ((argc > 1) && !strncmp(argv[1], "-", 1)) {
|
if ((argc > 1) && !strncmp(argv[1], "-", 1)) {
|
||||||
@ -64,16 +65,16 @@ int main(int argc, char **argv)
|
|||||||
return usage(1);
|
return usage(1);
|
||||||
if (argc > 2)
|
if (argc > 2)
|
||||||
maxpkts = atoi(argv[2]);
|
maxpkts = atoi(argv[2]);
|
||||||
strncpy(fntemplate, argv[1], PATH_MAX-1);
|
strncpy(fntemplate, argv[1], PATH_MAX - 1);
|
||||||
if (strrchr(argv[1], '/'))
|
if (strrchr(argv[1], '/'))
|
||||||
strncpy(fntemplate, strrchr(argv[1], '/')+1, PATH_MAX-1);
|
strncpy(fntemplate, strrchr(argv[1], '/') + 1, PATH_MAX - 1);
|
||||||
if (strrchr(fntemplate, '.'))
|
if (strrchr(fntemplate, '.'))
|
||||||
*strrchr(fntemplate, '.') = '\0';
|
*strrchr(fntemplate, '.') = '\0';
|
||||||
if (strchr(fntemplate, '%')) {
|
if (strchr(fntemplate, '%')) {
|
||||||
fprintf(stderr, "can't use filenames containing '%%'\n");
|
fprintf(stderr, "can't use filenames containing '%%'\n");
|
||||||
return usage(1);
|
return usage(1);
|
||||||
}
|
}
|
||||||
if (strlen(fntemplate) + sizeof(PKTFILESUFF) >= PATH_MAX-1) {
|
if (strlen(fntemplate) + sizeof(PKTFILESUFF) >= PATH_MAX - 1) {
|
||||||
fprintf(stderr, "filename too long\n");
|
fprintf(stderr, "filename too long\n");
|
||||||
return usage(1);
|
return usage(1);
|
||||||
}
|
}
|
||||||
@ -99,11 +100,14 @@ int main(int argc, char **argv)
|
|||||||
|
|
||||||
while ((err = av_read_frame(fctx, &pkt)) >= 0) {
|
while ((err = av_read_frame(fctx, &pkt)) >= 0) {
|
||||||
int fd;
|
int fd;
|
||||||
snprintf(pktfilename, PATH_MAX-1, fntemplate, pktnum, pkt.stream_index, pkt.pts, pkt.size, (pkt.flags & AV_PKT_FLAG_KEY)?'K':'_');
|
snprintf(pktfilename, PATH_MAX - 1, fntemplate, pktnum,
|
||||||
printf(PKTFILESUFF"\n", pktnum, pkt.stream_index, pkt.pts, pkt.size, (pkt.flags & AV_PKT_FLAG_KEY)?'K':'_');
|
pkt.stream_index, pkt.pts, pkt.size,
|
||||||
|
(pkt.flags & AV_PKT_FLAG_KEY) ? 'K' : '_');
|
||||||
|
printf(PKTFILESUFF "\n", pktnum, pkt.stream_index, pkt.pts, pkt.size,
|
||||||
|
(pkt.flags & AV_PKT_FLAG_KEY) ? 'K' : '_');
|
||||||
//printf("open(\"%s\")\n", pktfilename);
|
//printf("open(\"%s\")\n", pktfilename);
|
||||||
if (!nowrite) {
|
if (!nowrite) {
|
||||||
fd = open(pktfilename, O_WRONLY|O_CREAT, 0644);
|
fd = open(pktfilename, O_WRONLY | O_CREAT, 0644);
|
||||||
err = write(fd, pkt.data, pkt.size);
|
err = write(fd, pkt.data, pkt.size);
|
||||||
if (err < 0) {
|
if (err < 0) {
|
||||||
fprintf(stderr, "write: error %d\n", err);
|
fprintf(stderr, "write: error %d\n", err);
|
||||||
|
@ -39,7 +39,8 @@ static void probe(AVProbeData *pd, int type, int p, int size)
|
|||||||
int score = fmt->read_probe(pd);
|
int score = fmt->read_probe(pd);
|
||||||
if (score > score_array[i] && score > AVPROBE_SCORE_MAX / 4) {
|
if (score > score_array[i] && score > AVPROBE_SCORE_MAX / 4) {
|
||||||
score_array[i] = score;
|
score_array[i] = score;
|
||||||
fprintf(stderr, "Failure of %s probing code with score=%d type=%d p=%X size=%d\n",
|
fprintf(stderr,
|
||||||
|
"Failure of %s probing code with score=%d type=%d p=%X size=%d\n",
|
||||||
fmt->name, score, type, p, size);
|
fmt->name, score, type, p, size);
|
||||||
failures++;
|
failures++;
|
||||||
}
|
}
|
||||||
@ -75,9 +76,8 @@ int main(void)
|
|||||||
init_put_bits(&pb, pd.buf, size);
|
init_put_bits(&pb, pd.buf, size);
|
||||||
switch (type) {
|
switch (type) {
|
||||||
case 0:
|
case 0:
|
||||||
for (i = 0; i < size * 8; i++) {
|
for (i = 0; i < size * 8; i++)
|
||||||
put_bits(&pb, 1, (av_lfg_get(&state) & 0xFFFFFFFF) > p << 20);
|
put_bits(&pb, 1, (av_lfg_get(&state) & 0xFFFFFFFF) > p << 20);
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
case 1:
|
case 1:
|
||||||
for (i = 0; i < size * 8; i++) {
|
for (i = 0; i < size * 8; i++) {
|
||||||
@ -89,10 +89,10 @@ int main(void)
|
|||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
for (i = 0; i < size * 8; i++) {
|
for (i = 0; i < size * 8; i++) {
|
||||||
unsigned int p2 = (p >> (hist*3)) & 7;
|
unsigned int p2 = (p >> (hist * 3)) & 7;
|
||||||
unsigned int v = (av_lfg_get(&state) & 0xFFFFFFFF) > p2 << 29;
|
unsigned int v = (av_lfg_get(&state) & 0xFFFFFFFF) > p2 << 29;
|
||||||
put_bits(&pb, 1, v);
|
put_bits(&pb, 1, v);
|
||||||
hist = (2*hist + v) & 3;
|
hist = (2 * hist + v) & 3;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 3:
|
case 3:
|
||||||
@ -100,12 +100,18 @@ int main(void)
|
|||||||
int c = 0;
|
int c = 0;
|
||||||
while (p & 63) {
|
while (p & 63) {
|
||||||
c = (av_lfg_get(&state) & 0xFFFFFFFF) >> 24;
|
c = (av_lfg_get(&state) & 0xFFFFFFFF) >> 24;
|
||||||
if (c >= 'a' && c <= 'z' && (p & 1)) break;
|
if (c >= 'a' && c <= 'z' && (p & 1))
|
||||||
else if(c >= 'A' && c <= 'Z' && (p & 2)) break;
|
break;
|
||||||
else if(c >= '0' && c <= '9' && (p & 4)) break;
|
else if (c >= 'A' && c <= 'Z' && (p & 2))
|
||||||
else if(c == ' ' && (p & 8)) break;
|
break;
|
||||||
else if(c == 0 && (p & 16)) break;
|
else if (c >= '0' && c <= '9' && (p & 4))
|
||||||
else if(c == 1 && (p & 32)) break;
|
break;
|
||||||
|
else if (c == ' ' && (p & 8))
|
||||||
|
break;
|
||||||
|
else if (c == 0 && (p & 16))
|
||||||
|
break;
|
||||||
|
else if (c == 1 && (p & 32))
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
pd.buf[i] = c;
|
pd.buf[i] = c;
|
||||||
}
|
}
|
||||||
|
@ -138,7 +138,6 @@ int main(int argc, char *argv[])
|
|||||||
}
|
}
|
||||||
start_offset = ftello(infile);
|
start_offset = ftello(infile);
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
/* 64-bit special case */
|
/* 64-bit special case */
|
||||||
if (atom_size == 1) {
|
if (atom_size == 1) {
|
||||||
if (fread(atom_bytes, ATOM_PREAMBLE_SIZE, 1, infile) != 1) {
|
if (fread(atom_bytes, ATOM_PREAMBLE_SIZE, 1, infile) != 1) {
|
||||||
|
@ -23,47 +23,50 @@
|
|||||||
#include <inttypes.h>
|
#include <inttypes.h>
|
||||||
|
|
||||||
static uint32_t state;
|
static uint32_t state;
|
||||||
static uint32_t ran(void){
|
static uint32_t ran(void)
|
||||||
return state= state*1664525+1013904223;
|
{
|
||||||
|
return state = state * 1664525 + 1013904223;
|
||||||
}
|
}
|
||||||
|
|
||||||
int main(int argc, char** argv)
|
int main(int argc, char **argv)
|
||||||
{
|
{
|
||||||
FILE *f;
|
FILE *f;
|
||||||
int count, maxburst, length;
|
int count, maxburst, length;
|
||||||
|
|
||||||
if (argc < 5){
|
if (argc < 5) {
|
||||||
printf("USAGE: trasher <filename> <count> <maxburst> <seed>\n");
|
printf("USAGE: trasher <filename> <count> <maxburst> <seed>\n");
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
f= fopen(argv[1], "rb+");
|
f = fopen(argv[1], "rb+");
|
||||||
if (!f){
|
if (!f) {
|
||||||
perror(argv[1]);
|
perror(argv[1]);
|
||||||
return 2;
|
return 2;
|
||||||
}
|
}
|
||||||
count= atoi(argv[2]);
|
count = atoi(argv[2]);
|
||||||
maxburst= atoi(argv[3]);
|
maxburst = atoi(argv[3]);
|
||||||
state= atoi(argv[4]);
|
state = atoi(argv[4]);
|
||||||
|
|
||||||
fseek(f, 0, SEEK_END);
|
fseek(f, 0, SEEK_END);
|
||||||
length= ftell(f);
|
length = ftell(f);
|
||||||
fseek(f, 0, SEEK_SET);
|
fseek(f, 0, SEEK_SET);
|
||||||
|
|
||||||
while(count--){
|
while (count--) {
|
||||||
int burst= 1 + ran() * (uint64_t) (abs(maxburst)-1) / UINT32_MAX;
|
int burst = 1 + ran() * (uint64_t) (abs(maxburst) - 1) / UINT32_MAX;
|
||||||
int pos= ran() * (uint64_t) length / UINT32_MAX;
|
int pos = ran() * (uint64_t) length / UINT32_MAX;
|
||||||
fseek(f, pos, SEEK_SET);
|
fseek(f, pos, SEEK_SET);
|
||||||
|
|
||||||
if(maxburst<0) burst= -maxburst;
|
if (maxburst < 0)
|
||||||
|
burst = -maxburst;
|
||||||
|
|
||||||
if(pos + burst > length)
|
if (pos + burst > length)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
while(burst--){
|
while (burst--) {
|
||||||
int val= ran() * 256ULL / UINT32_MAX;
|
int val = ran() * 256ULL / UINT32_MAX;
|
||||||
|
|
||||||
if(maxburst<0) val=0;
|
if (maxburst < 0)
|
||||||
|
val = 0;
|
||||||
|
|
||||||
fwrite(&val, 1, 1, f);
|
fwrite(&val, 1, 1, f);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user