OBJS-$(CONFIG_H264_VDA_HWACCEL) += vda_h264.o
diff -Naur ../../libav-v9.3/libavcodec/qsv.c ./libavcodec/qsv.c
--- ../../libav-v9.3/libavcodec/qsv.c 1970-01-01 01:00:00.000000000 +0100
-+++ ./libavcodec/qsv.c 2013-04-17 23:24:35.700898164 +0200
++++ ./libavcodec/qsv.c 2013-05-15 17:13:43.317341393 +0200
@@ -0,0 +1,621 @@
+/* ********************************************************************* *\
+
+ return (stage->type << 16) | 2;
+ if (p_surface == stage->in.p_surface)
+ return (stage->type << 16) | 1;
-+ }
+ }
++ }
+ return ret;
+}
+
+ for (x = av_qsv_list_count(to_remove_atom_list); x > 0; x--){
+ to_remove_atom = av_qsv_list_item(to_remove_atom_list, x-1);
+ av_qsv_flush_stages(list,&to_remove_atom);
-+}
++ }
+ }
+ av_qsv_list_close(&to_remove_list);
+ }
+ av_log(NULL, AV_LOG_ERROR, "pthread_mutex_unlock issue[%d] at %s\n",mut_ret, __FUNCTION__);
+ mut_ret = pthread_mutex_destroy(&l->mutex);
+ mut_ret = pthread_mutexattr_destroy(&l->mta);
-+}
++ }
+#endif
+ av_freep(_l);
+}
+}
diff -Naur ../../libav-v9.3/libavcodec/qsv.h ./libavcodec/qsv.h
--- ../../libav-v9.3/libavcodec/qsv.h 1970-01-01 01:00:00.000000000 +0100
-+++ ./libavcodec/qsv.h 2013-04-17 23:24:35.708899156 +0200
++++ ./libavcodec/qsv.h 2013-05-15 17:13:43.321341889 +0200
@@ -0,0 +1,493 @@
+/* ********************************************************************* *\
+
+#endif //AVCODEC_QSV_H
diff -Naur ../../libav-v9.3/libavcodec/qsv_h264.c ./libavcodec/qsv_h264.c
--- ../../libav-v9.3/libavcodec/qsv_h264.c 1970-01-01 01:00:00.000000000 +0100
-+++ ./libavcodec/qsv_h264.c 2013-04-17 23:24:35.706898908 +0200
-@@ -0,0 +1,961 @@
++++ ./libavcodec/qsv_h264.c 2013-05-15 17:13:43.320341765 +0200
+@@ -0,0 +1,959 @@
+/* ********************************************************************* *\
+
+Copyright (C) 2013 Intel Corporation. All rights reserved.
+ if ((int) size < 4)
+ return 0;
+
-+ while ((4 <= size) && ((0 != pb[0]) || (0 != pb[1]) || (1 != pb[2]))) {
++ while ((4 <= size) && ((0 != pb[0]) || (0 != pb[1]) || (0 != pb[2]) || (1 != pb[3]))) {
+ pb += 1;
+ size -= 1;
+ }
+ }
+
+ if (current_size) {
-+
+ if(qsv->is_anex == ANEX_UNKNOWN){
+ if (ff_qsv_nal_find_start_code(current_position, current_size) && current_position == avpkt->data)
+ qsv->is_anex = ANEX_PREFIX;
+ else
+ qsv->is_anex = ANEX_NO_PREFIX;
+ }
-+
+ if (qsv->is_anex == ANEX_PREFIX){
+ memcpy(&qsv_decode->bs.Data[0] +
+ qsv_decode->bs.DataLength +
+ frame_length += avpkt->size;
+ }
+ else
-+ while (current_offset <= current_size) {
-+ current_nal_size =
-+ ((unsigned char) current_position[current_offset - 2] << 24 |
-+ (unsigned char) current_position[current_offset - 1] << 16 |
-+ (unsigned char) current_position[current_offset] << 8 |
-+ (unsigned char) current_position[current_offset + 1]) - 1;
-+ nal_type =
-+ (unsigned char) current_position[current_offset + 2] & 0x1F;
-+ {
-+ frame_length += current_nal_size;
-+ memcpy(&qsv_decode->bs.Data[0] +
-+ qsv_decode->bs.DataLength +
-+ qsv_decode->bs.DataOffset, ff_prefix_code,
-+ sizeof(ff_prefix_code));
-+ qsv_decode->bs.DataLength += sizeof(ff_prefix_code);
-+ memcpy(&qsv_decode->bs.Data[0] +
-+ qsv_decode->bs.DataLength +
-+ qsv_decode->bs.DataOffset,
-+ ¤t_position[current_offset + 2],
-+ current_nal_size + 1);
-+ qsv_decode->bs.DataLength += current_nal_size + 1;
++ while (current_offset <= current_size) {
++ current_nal_size =
++ ((unsigned char) current_position[current_offset - 2] << 24 |
++ (unsigned char) current_position[current_offset - 1] << 16 |
++ (unsigned char) current_position[current_offset] << 8 |
++ (unsigned char) current_position[current_offset + 1]) - 1;
++ nal_type =
++ (unsigned char) current_position[current_offset + 2] & 0x1F;
++ {
++ frame_length += current_nal_size;
++ memcpy(&qsv_decode->bs.Data[0] +
++ qsv_decode->bs.DataLength +
++ qsv_decode->bs.DataOffset, ff_prefix_code,
++ sizeof(ff_prefix_code));
++ qsv_decode->bs.DataLength += sizeof(ff_prefix_code);
++ memcpy(&qsv_decode->bs.Data[0] +
++ qsv_decode->bs.DataLength +
++ qsv_decode->bs.DataOffset,
++ ¤t_position[current_offset + 2],
++ current_nal_size + 1);
++ qsv_decode->bs.DataLength += current_nal_size + 1;
++ }
++ current_offset += current_nal_size + 5;
+ }
-+ current_offset += current_nal_size + 5;
-+ }
+
+ if (qsv_decode->bs.DataLength > qsv_decode->bs.MaxLength) {
+ av_log(avctx, AV_LOG_FATAL, "DataLength > MaxLength\n");
+};
diff -Naur ../../libav-v9.3/libavcodec/qsv_h264.h ./libavcodec/qsv_h264.h
--- ../../libav-v9.3/libavcodec/qsv_h264.h 1970-01-01 01:00:00.000000000 +0100
-+++ ./libavcodec/qsv_h264.h 2013-04-17 23:24:35.708899156 +0200
++++ ./libavcodec/qsv_h264.h 2013-05-15 17:13:43.335343623 +0200
@@ -0,0 +1,64 @@
+/* ********************************************************************* *\
+