groove/encoder.c:619:59: error: use of undeclared identifier 'CODEC_CAP_VARIABLE_FRAME_SIZE'
    e->sink->buffer_sample_count = (codec->capabilities & CODEC_CAP_VARIABLE_FRAME_SIZE) ?
                                                          ^
groove/file.c:284:66: error: use of undeclared identifier 'FF_INPUT_BUFFER_PADDING_SIZE'
        uint64_t extra_size = (uint64_t)icodec->extradata_size + FF_INPUT_BUFFER_PADDING_SIZE;
                                                                 ^
groove/playlist.c:189:63: error: use of undeclared identifier 'CODEC_CAP_DELAY'
            if (!pkt_temp->data && dec->codec->capabilities & CODEC_CAP_DELAY)
                                                              ^
groove/playlist.c:574:55: error: use of undeclared identifier 'CODEC_CAP_DELAY'
        if (f->audio_st->codec->codec->capabilities & CODEC_CAP_DELAY) {
                                                      ^
groove/playlist.c:990:22: error: assigning to 'AVFilter *' (aka 'struct AVFilter *') from 'const AVFilter *' (aka 'const struct AVFilter *') discards qualifiers [-Werror,-Wincompatible-pointer-types-discards-qualifiers]
    p->volume_filter = avfilter_get_by_name("volume");
                     ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
groove/playlist.c:997:23: error: assigning to 'AVFilter *' (aka 'struct AVFilter *') from 'const AVFilter *' (aka 'const struct AVFilter *') discards qualifiers [-Werror,-Wincompatible-pointer-types-discards-qualifiers]
    p->compand_filter = avfilter_get_by_name("compand");
                      ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
groove/playlist.c:1004:23: error: assigning to 'AVFilter *' (aka 'struct AVFilter *') from 'const AVFilter *' (aka 'const struct AVFilter *') discards qualifiers [-Werror,-Wincompatible-pointer-types-discards-qualifiers]
    p->abuffer_filter = avfilter_get_by_name("abuffer");
                      ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
groove/playlist.c:1011:22: error: assigning to 'AVFilter *' (aka 'struct AVFilter *') from 'const AVFilter *' (aka 'const struct AVFilter *') discards qualifiers [-Werror,-Wincompatible-pointer-types-discards-qualifiers]
    p->asplit_filter = avfilter_get_by_name("asplit");
                     ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
groove/playlist.c:1018:23: error: assigning to 'AVFilter *' (aka 'struct AVFilter *') from 'const AVFilter *' (aka 'const struct AVFilter *') discards qualifiers [-Werror,-Wincompatible-pointer-types-discards-qualifiers]
    p->aformat_filter = avfilter_get_by_name("aformat");
                      ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
groove/playlist.c:1025:27: error: assigning to 'AVFilter *' (aka 'struct AVFilter *') from 'const AVFilter *' (aka 'const struct AVFilter *') discards qualifiers [-Werror,-Wincompatible-pointer-types-discards-qualifiers]
    p->abuffersink_filter = avfilter_get_by_name("abuffersink");
                          ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

--- groove/encoder.c.orig	2015-05-26 01:32:01 UTC
+++ groove/encoder.c
@@ -616,7 +616,7 @@ int groove_encoder_attach(struct GrooveEncoder *encode
 
     e->sink->audio_format = encoder->actual_audio_format;
     e->sink->buffer_size = encoder->sink_buffer_size;
-    e->sink->buffer_sample_count = (codec->capabilities & CODEC_CAP_VARIABLE_FRAME_SIZE) ?
+    e->sink->buffer_sample_count = (codec->capabilities & AV_CODEC_CAP_VARIABLE_FRAME_SIZE) ?
         0 : e->stream->codec->frame_size;
     e->sink->gain = encoder->gain;
 
--- groove/file.c.orig	2015-05-26 01:32:01 UTC
+++ groove/file.c
@@ -281,7 +281,7 @@ int groove_file_save(struct GrooveFile *file) {
         ocodec->rc_buffer_size = icodec->rc_buffer_size;
         ocodec->field_order    = icodec->field_order;
 
-        uint64_t extra_size = (uint64_t)icodec->extradata_size + FF_INPUT_BUFFER_PADDING_SIZE;
+        uint64_t extra_size = (uint64_t)icodec->extradata_size + AV_INPUT_BUFFER_PADDING_SIZE;
         if (extra_size > INT_MAX) {
             cleanup_save(file);
             av_log(NULL, AV_LOG_ERROR, "codec extra size too big\n");
--- groove/playlist.c.orig	2015-05-26 01:32:01 UTC
+++ groove/playlist.c
@@ -54,12 +54,12 @@ struct GroovePlaylistPrivate {
     AVFilterGraph *filter_graph;
     AVFilterContext *abuffer_ctx;
 
-    AVFilter *volume_filter;
-    AVFilter *compand_filter;
-    AVFilter *abuffer_filter;
-    AVFilter *asplit_filter;
-    AVFilter *aformat_filter;
-    AVFilter *abuffersink_filter;
+    const AVFilter *volume_filter;
+    const AVFilter *compand_filter;
+    const AVFilter *abuffer_filter;
+    const AVFilter *asplit_filter;
+    const AVFilter *aformat_filter;
+    const AVFilter *abuffersink_filter;
 
     pthread_mutex_t drain_cond_mutex;
     int drain_cond_mutex_inited;
@@ -186,7 +186,7 @@ static int audio_decode_frame(struct GroovePlaylist *p
 
         if (!got_frame) {
             // stop sending empty packets if the decoder is finished
-            if (!pkt_temp->data && dec->codec->capabilities & CODEC_CAP_DELAY)
+            if (!pkt_temp->data && dec->codec->capabilities & AV_CODEC_CAP_DELAY)
                 return 0;
             continue;
         }
@@ -571,7 +571,7 @@ static int decode_one_frame(struct GroovePlaylist *pla
     pthread_mutex_unlock(&f->seek_mutex);
 
     if (f->eof) {
-        if (f->audio_st->codec->codec->capabilities & CODEC_CAP_DELAY) {
+        if (f->audio_st->codec->codec->capabilities & AV_CODEC_CAP_DELAY) {
             av_init_packet(pkt);
             pkt->data = NULL;
             pkt->size = 0;
