Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in / Register
Toggle navigation
F
ffmpeg
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
Packages
Packages
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
submodule
ffmpeg
Commits
d31e3f7c
Commit
d31e3f7c
authored
Jun 18, 2011
by
Anton Khirnov
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
gif: add loop private option.
Deprecate AVFormatContext.loop_output.
parent
6002fdef
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
34 additions
and
4 deletions
+34
-4
avformat.h
libavformat/avformat.h
+5
-1
gif.c
libavformat/gif.c
+26
-3
version.h
libavformat/version.h
+3
-0
No files found.
libavformat/avformat.h
View file @
d31e3f7c
...
...
@@ -723,12 +723,16 @@ typedef struct AVFormatContext {
int
preload
;
int
max_delay
;
#if FF_API_LOOP_OUTPUT
#define AVFMT_NOOUTPUTLOOP -1
#define AVFMT_INFINITEOUTPUTLOOP 0
/**
* number of times to loop output in formats that support it
*
* @deprecated use the 'loop' private option in the gif muxer.
*/
int
loop_output
;
attribute_deprecated
int
loop_output
;
#endif
int
flags
;
#define AVFMT_FLAG_GENPTS 0x0001 ///< Generate missing pts even if it requires parsing future frames.
...
...
libavformat/gif.c
View file @
d31e3f7c
...
...
@@ -40,6 +40,8 @@
*/
#include "avformat.h"
#include "libavutil/log.h"
#include "libavutil/opt.h"
/* The GIF format uses reversed order for bitstreams... */
/* at least they don't use PDP_ENDIAN :) */
...
...
@@ -245,8 +247,10 @@ static int gif_image_write_image(AVIOContext *pb,
}
typedef
struct
{
AVClass
*
class
;
/** Class for private options. */
int64_t
time
,
file_time
;
uint8_t
buffer
[
100
];
/* data chunks */
int
loop
;
}
GIFContext
;
static
int
gif_write_header
(
AVFormatContext
*
s
)
...
...
@@ -254,7 +258,7 @@ static int gif_write_header(AVFormatContext *s)
GIFContext
*
gif
=
s
->
priv_data
;
AVIOContext
*
pb
=
s
->
pb
;
AVCodecContext
*
enc
,
*
video_enc
;
int
i
,
width
,
height
,
loop_count
/*, rate*/
;
int
i
,
width
,
height
/*, rate*/
;
/* XXX: do we reject audio streams or just ignore them ?
if(s->nb_streams > 1)
...
...
@@ -276,7 +280,6 @@ static int gif_write_header(AVFormatContext *s)
}
else
{
width
=
video_enc
->
width
;
height
=
video_enc
->
height
;
loop_count
=
s
->
loop_output
;
// rate = video_enc->time_base.den;
}
...
...
@@ -285,7 +288,12 @@ static int gif_write_header(AVFormatContext *s)
return
AVERROR
(
EIO
);
}
gif_image_write_header
(
pb
,
width
,
height
,
loop_count
,
NULL
);
#if FF_API_LOOP_OUTPUT
if
(
s
->
loop_output
)
gif
->
loop
=
s
->
loop_output
;
#endif
gif_image_write_header
(
pb
,
width
,
height
,
gif
->
loop
,
NULL
);
avio_flush
(
s
->
pb
);
return
0
;
...
...
@@ -340,6 +348,20 @@ static int gif_write_trailer(AVFormatContext *s)
return
0
;
}
#define OFFSET(x) offsetof(GIFContext, x)
#define ENC AV_OPT_FLAG_ENCODING_PARAM
static
const
AVOption
options
[]
=
{
{
"loop"
,
"Number of times to loop the output."
,
OFFSET
(
loop
),
FF_OPT_TYPE_INT
,
{
0
},
0
,
65535
,
ENC
},
{
NULL
},
};
static
const
AVClass
gif_muxer_class
=
{
.
class_name
=
"GIF muxer"
,
.
item_name
=
av_default_item_name
,
.
version
=
LIBAVUTIL_VERSION_INT
,
.
option
=
options
,
};
AVOutputFormat
ff_gif_muxer
=
{
"gif"
,
NULL_IF_CONFIG_SMALL
(
"GIF Animation"
),
...
...
@@ -351,4 +373,5 @@ AVOutputFormat ff_gif_muxer = {
gif_write_header
,
gif_write_packet
,
gif_write_trailer
,
.
priv_class
=
&
gif_muxer_class
,
};
libavformat/version.h
View file @
d31e3f7c
...
...
@@ -80,5 +80,8 @@
#ifndef FF_API_LOOP_INPUT
#define FF_API_LOOP_INPUT (LIBAVFORMAT_VERSION_MAJOR < 54)
#endif
#ifndef FF_API_LOOP_OUTPUT
#define FF_API_LOOP_OUTPUT (LIBAVFORMAT_VERSION_MAJOR < 54)
#endif
#endif
/* AVFORMAT_VERSION_H */
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