You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
gentoo-overlay/media-video/motion/files/ffmpeg-5.patch

123 lines
4.3 KiB

Convert to avio API.
Disable mpeg1 append code based or the ffurl API as mpeg1 is blacklisted with
new ffmpeg versions in this code anyway.
Fix build with ffmpeg-1
Index: motion-3.2.12/ffmpeg.c
===================================================================
--- motion-3.2.12.orig/ffmpeg.c
+++ motion-3.2.12/ffmpeg.c
@@ -73,6 +73,7 @@ AVFrame *ffmpeg_prepare_frame(struct ffm
/* This is the trailer used to end mpeg1 videos. */
static unsigned char mpeg1_trailer[] = {0x00, 0x00, 0x01, 0xb7};
+#ifndef FFMPEG_NO_NONSTD_MPEG1
/* Append version of the file open function used in libavformat when opening
* an ordinary file. The original file open function truncates an existing
* file, but this version appends to it instead.
@@ -118,6 +119,7 @@ URLProtocol mpeg1_file_protocol = {
.url_open = file_open_append
};
+#endif
#ifdef HAVE_FFMPEG_NEW
@@ -132,6 +134,7 @@ URLProtocol mpeg1_file_protocol = {
#include "avstring.h"
#endif
+#ifndef FFMPEG_NO_NONSTD_MPEG1
static int file_open(URLContext *h, const char *filename, int flags)
{
int access_flags, fd;
@@ -195,6 +198,7 @@ URLProtocol file_protocol = {
};
#endif
+#endif
/* We set AVOutputFormat->write_trailer to this function for mpeg1. That way,
@@ -203,8 +207,8 @@ URLProtocol file_protocol = {
static int mpeg1_write_trailer(AVFormatContext *s)
{
#if LIBAVFORMAT_BUILD >= (52<<16)
- put_buffer(s->pb, mpeg1_trailer, 4);
- put_flush_packet(s->pb);
+ avio_write(s->pb, mpeg1_trailer, 4);
+ avio_flush(s->pb);
#else
put_buffer(&s->pb, mpeg1_trailer, 4);
put_flush_packet(&s->pb);
@@ -226,6 +230,7 @@ void ffmpeg_init()
/* Copy the functions to use for the append file protocol from the standard
* file protocol.
*/
+#ifndef FFMPEG_NO_NONSTD_MPEG1
mpeg1_file_protocol.url_read = file_protocol.url_read;
mpeg1_file_protocol.url_write = file_protocol.url_write;
mpeg1_file_protocol.url_seek = file_protocol.url_seek;
@@ -239,6 +244,7 @@ void ffmpeg_init()
#else
register_protocol(&mpeg1_file_protocol);
#endif
+#endif
}
/* Obtains the output format used for the specified codec. For mpeg4 codecs,
@@ -422,13 +428,6 @@ struct ffmpeg *ffmpeg_open(char *ffmpeg_
c->flags |= CODEC_FLAG_GLOBAL_HEADER;
}
- /* set the output parameters (must be done even if no parameters). */
- if (av_set_parameters(ffmpeg->oc, NULL) < 0) {
- motion_log(LOG_ERR, 0, "ffmpeg av_set_parameters error: Invalid output format parameters");
- ffmpeg_cleanups(ffmpeg);
- return NULL;
- }
-
/* Dump the format settings. This shows how the various streams relate to each other */
//dump_format(ffmpeg->oc, 0, filename, 1);
@@ -504,7 +503,7 @@ struct ffmpeg *ffmpeg_open(char *ffmpeg_
snprintf(file_proto, sizeof(file_proto), "%s", filename);
- if (url_fopen(&ffmpeg->oc->pb, file_proto, URL_WRONLY) < 0) {
+ if (avio_open(&ffmpeg->oc->pb, file_proto, AVIO_FLAG_WRITE) < 0) {
/* path did not exist? */
if (errno == ENOENT) {
/* create path for file (don't use file_proto)... */
@@ -514,7 +513,7 @@ struct ffmpeg *ffmpeg_open(char *ffmpeg_
}
/* and retry opening the file (use file_proto) */
- if (url_fopen(&ffmpeg->oc->pb, file_proto, URL_WRONLY) < 0) {
+ if (avio_open(&ffmpeg->oc->pb, file_proto, AVIO_FLAG_WRITE) < 0) {
motion_log(LOG_ERR, 1, "url_fopen - error opening file %s",filename);
ffmpeg_cleanups(ffmpeg);
return NULL;
@@ -535,7 +534,11 @@ struct ffmpeg *ffmpeg_open(char *ffmpeg_
}
/* write the stream header, if any */
- av_write_header(ffmpeg->oc);
+ if(avformat_write_header(ffmpeg->oc, NULL) < 0) {
+ motion_log(LOG_ERR, 1, "Error while writing header for %s", filename);
+ ffmpeg_cleanups(ffmpeg);
+ return NULL;
+ }
return ffmpeg;
}
@@ -602,7 +605,7 @@ void ffmpeg_close(struct ffmpeg *ffmpeg)
if (!(ffmpeg->oc->oformat->flags & AVFMT_NOFILE)) {
/* close the output file */
#if LIBAVFORMAT_BUILD >= (52<<16)
- url_fclose(ffmpeg->oc->pb);
+ avio_close(ffmpeg->oc->pb);
#else
url_fclose(&ffmpeg->oc->pb);
#endif /* LIBAVFORMAT_BUILD >= (52<<16) */