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
0f1250b7
Commit
0f1250b7
authored
Apr 19, 2013
by
Clément Bœsch
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
lavc/gif: make possible to disable offsetting.
parent
8f116bf7
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
24 additions
and
1 deletion
+24
-1
gif.c
libavcodec/gif.c
+24
-1
No files found.
libavcodec/gif.c
View file @
0f1250b7
...
...
@@ -28,6 +28,7 @@
* @see http://www.w3.org/Graphics/GIF/spec-gif89a.txt
*/
#include "libavutil/opt.h"
#include "avcodec.h"
#include "bytestream.h"
#include "internal.h"
...
...
@@ -40,12 +41,18 @@
#include "put_bits.h"
typedef
struct
{
const
AVClass
*
class
;
AVFrame
picture
;
LZWState
*
lzw
;
uint8_t
*
buf
;
AVFrame
*
last_frame
;
int
flags
;
}
GIFContext
;
enum
{
GF_OFFSETTING
=
1
<<
0
,
};
static
int
gif_image_write_image
(
AVCodecContext
*
avctx
,
uint8_t
**
bytestream
,
uint8_t
*
end
,
const
uint32_t
*
palette
,
...
...
@@ -58,7 +65,7 @@ static int gif_image_write_image(AVCodecContext *avctx,
/* Crop image */
// TODO support with palette change
if
(
s
->
last_frame
&&
!
palette
)
{
if
(
(
s
->
flags
&
GF_OFFSETTING
)
&&
s
->
last_frame
&&
!
palette
)
{
const
uint8_t
*
ref
=
s
->
last_frame
->
data
[
0
];
const
int
ref_linesize
=
s
->
last_frame
->
linesize
[
0
];
int
x_end
=
avctx
->
width
-
1
,
...
...
@@ -224,6 +231,21 @@ static int gif_encode_close(AVCodecContext *avctx)
return
0
;
}
#define OFFSET(x) offsetof(GIFContext, x)
#define FLAGS AV_OPT_FLAG_VIDEO_PARAM | AV_OPT_FLAG_ENCODING_PARAM
static
const
AVOption
gif_options
[]
=
{
{
"gifflags"
,
"set GIF flags"
,
OFFSET
(
flags
),
AV_OPT_TYPE_FLAGS
,
{.
i64
=
GF_OFFSETTING
},
0
,
INT_MAX
,
FLAGS
,
"flags"
},
{
"offsetting"
,
"enable picture offsetting"
,
0
,
AV_OPT_TYPE_CONST
,
{.
i64
=
GF_OFFSETTING
},
INT_MIN
,
INT_MAX
,
FLAGS
,
"flags"
},
{
NULL
}
};
static
const
AVClass
gif_class
=
{
.
class_name
=
"GIF encoder"
,
.
item_name
=
av_default_item_name
,
.
option
=
gif_options
,
.
version
=
LIBAVUTIL_VERSION_INT
,
};
AVCodec
ff_gif_encoder
=
{
.
name
=
"gif"
,
.
type
=
AVMEDIA_TYPE_VIDEO
,
...
...
@@ -237,4 +259,5 @@ AVCodec ff_gif_encoder = {
AV_PIX_FMT_GRAY8
,
AV_PIX_FMT_PAL8
,
AV_PIX_FMT_NONE
},
.
long_name
=
NULL_IF_CONFIG_SMALL
(
"GIF (Graphics Interchange Format)"
),
.
priv_class
=
&
gif_class
,
};
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