--- Begin Message ---
Package: avbin
Version: 7-1.1
Severity: important
Tags: patch
User: ubuntu-de...@lists.ubuntu.com
Usertags: origin-ubuntu oneiric ubuntu-patch
*** /tmp/tmpRLR17V
In Ubuntu, the attached patch was applied to achieve the following:
* Remove usage of deprecated APIs to work with Libav 0.7
Libav 0.7 is currently in experimental, but will be soon uploaded to unstable.
-- System Information:
Debian Release: squeeze/sid
APT prefers natty-updates
APT policy: (500, 'natty-updates'), (500, 'natty-security'), (500,
'natty-proposed'), (500, 'natty')
Architecture: amd64 (x86_64)
Kernel: Linux 2.6.38-10-generic (SMP w/4 CPU cores)
Locale: LANG=de_DE.UTF-8, LC_CTYPE=de_DE.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash
diff -u avbin-7/debian/changelog avbin-7/debian/changelog
diff -u avbin-7/src/avbin.c avbin-7/src/avbin.c
--- avbin-7/src/avbin.c
+++ avbin-7/src/avbin.c
@@ -29,9 +29,11 @@
#include <avcodec.h>
#include <avutil.h>
#include <swscale.h>
+#include <libavutil/dict.h>
struct _AVbinFile {
AVFormatContext *context;
+ AVDictionary *format_options;
AVPacket *packet;
};
@@ -122,7 +124,7 @@
AVbinFile *avbin_open_filename(const char *filename)
{
AVbinFile *file = malloc(sizeof *file);
- if (av_open_input_file(&file->context, filename, NULL, 0, NULL) != 0)
+ if (av_open_input(&file->context, filename, NULL, &file->format_options) != 0)
goto error;
if (av_find_stream_info(file->context) < 0)
@@ -168,20 +170,38 @@
AVbinResult avbin_file_info(AVbinFile *file, AVbinFileInfo *info)
{
+ AVDictionaryEntry *result;
+
if (info->structure_size < sizeof *info)
return AVBIN_RESULT_ERROR;
info->n_streams = file->context->nb_streams;
info->start_time = file->context->start_time;
info->duration = file->context->duration;
- memcpy(info->title, file->context->title, sizeof(info->title));
- memcpy(info->author, file->context->author, sizeof(info->author));
- memcpy(info->copyright, file->context->copyright, sizeof(info->copyright));
- memcpy(info->comment, file->context->comment, sizeof(info->comment));
- memcpy(info->album, file->context->album, sizeof(info->album));
- info->year = file->context->year;
- info->track = file->context->track;
- memcpy(info->genre, file->context->genre, sizeof(info->genre));
+
+ result = av_dict_get(file->format_options, "title", NULL, 0);
+ strncpy(info->title, result->value, sizeof(info->title));
+
+ result = av_dict_get(file->format_options, "artist", NULL, 0);
+ strncpy(info->author, result->value, sizeof(info->author));
+
+ result = av_dict_get(file->format_options, "copyright", NULL, 0);
+ strncpy(info->copyright, result->value, sizeof(info->copyright));
+
+ result = av_dict_get(file->format_options, "comment", NULL, 0);
+ strncpy(info->comment, result->value, sizeof(info->comment));
+
+ result = av_dict_get(file->format_options, "album", NULL, 0);
+ strncpy(info->album, result->value, sizeof(info->album));
+
+ result = av_dict_get(file->format_options, "year", NULL, 0);
+ info->year = strtol(result->value, NULL, 10);
+
+ result = av_dict_get(file->format_options, "track", NULL, 0);
+ info->track = strtol(result->value, NULL, 10);
+
+ result = av_dict_get(file->format_options, "genre", NULL, 0);
+ strncpy(info->genre, result->value, sizeof(info->genre));
return AVBIN_RESULT_OK;
}
@@ -197,14 +217,14 @@
switch (context->codec_type)
{
- case CODEC_TYPE_VIDEO:
+ case AVMEDIA_TYPE_VIDEO:
info->type = AVBIN_STREAM_TYPE_VIDEO;
info->video.width = context->width;
info->video.height = context->height;
info->video.sample_aspect_num = context->sample_aspect_ratio.num;
info->video.sample_aspect_den = context->sample_aspect_ratio.den;
break;
- case CODEC_TYPE_AUDIO:
+ case AVMEDIA_TYPE_AUDIO:
info->type = AVBIN_STREAM_TYPE_AUDIO;
info->audio.sample_rate = context->sample_rate;
info->audio.channels = context->channels;
@@ -256,7 +276,7 @@
stream->format_context = file->context;
stream->codec_context = codec_context;
stream->type = codec_context->codec_type;
- if (stream->type == CODEC_TYPE_VIDEO)
+ if (stream->type == AVMEDIA_TYPE_VIDEO)
stream->frame = avcodec_alloc_frame();
else
stream->frame = NULL;
@@ -298,7 +318,7 @@
uint8_t *data_out, int *size_out)
{
int used;
- if (stream->type != CODEC_TYPE_AUDIO)
+ if (stream->type != AVMEDIA_TYPE_AUDIO)
return AVBIN_RESULT_ERROR;
used = avcodec_decode_audio2(stream->codec_context,
@@ -321,7 +341,7 @@
int height = stream->codec_context->height;
int used;
- if (stream->type != CODEC_TYPE_VIDEO)
+ if (stream->type != AVMEDIA_TYPE_VIDEO)
return AVBIN_RESULT_ERROR;
used = avcodec_decode_video(stream->codec_context,
--- End Message ---