avcodec/clearvideo: Fix multiple runtime error: left shift of negative value -1024
[ffmpeg.git] / libavcodec / mediacodec.c
index cd8766f..610bb49 100644 (file)
 
 #include "config.h"
 
+#include "libavutil/error.h"
+
+#include "mediacodec.h"
+
 #if CONFIG_H264_MEDIACODEC_HWACCEL
 
 #include <jni.h>
 
 #include "libavcodec/avcodec.h"
-#include "libavutil/atomic.h"
 #include "libavutil/mem.h"
 
 #include "ffjni.h"
-#include "mediacodec.h"
-#include "mediacodecdec.h"
+#include "mediacodecdec_common.h"
+#include "version.h"
 
 AVMediaCodecContext *av_mediacodec_alloc_context(void)
 {
@@ -86,9 +89,9 @@ void av_mediacodec_default_free(AVCodecContext *avctx)
 int av_mediacodec_release_buffer(AVMediaCodecBuffer *buffer, int render)
 {
     MediaCodecDecContext *ctx = buffer->ctx;
-    int released = avpriv_atomic_int_add_and_fetch(&buffer->released, 1);
+    int released = atomic_fetch_add(&buffer->released, 1);
 
-    if (released == 1) {
+    if (!released) {
         return ff_AMediaCodec_releaseOutputBuffer(ctx->codec, buffer->index, render);
     }
 
@@ -99,8 +102,6 @@ int av_mediacodec_release_buffer(AVMediaCodecBuffer *buffer, int render)
 
 #include <stdlib.h>
 
-#include "mediacodec.h"
-
 AVMediaCodecContext *av_mediacodec_alloc_context(void)
 {
     return NULL;
@@ -108,7 +109,7 @@ AVMediaCodecContext *av_mediacodec_alloc_context(void)
 
 int av_mediacodec_default_init(AVCodecContext *avctx, AVMediaCodecContext *ctx, void *surface)
 {
-    return 0;
+    return AVERROR(ENOSYS);
 }
 
 void av_mediacodec_default_free(AVCodecContext *avctx)
@@ -117,7 +118,7 @@ void av_mediacodec_default_free(AVCodecContext *avctx)
 
 int av_mediacodec_release_buffer(AVMediaCodecBuffer *buffer, int render)
 {
-    return 0;
+    return AVERROR(ENOSYS);
 }
 
 #endif