diff --git a/lib/media.c b/lib/media.c
index 36dee3b9e52f8268f5359cccf6d1c35b7752bfca..d4e3ba7a62141040bafea8af2aba26839a75397d 100644
--- a/lib/media.c
+++ b/lib/media.c
@@ -394,7 +394,7 @@ libvlc_media_t * libvlc_media_new_from_input_item(
 
     p_md->p_libvlc_instance = p_instance;
     p_md->p_input_item      = p_input_item;
-    vlc_atomic_rc_init(&p_md->refcount);
+    p_md->i_refcount        = 1;
 
     vlc_cond_init(&p_md->parsed_cond);
     vlc_mutex_init(&p_md->parsed_lock);
@@ -547,7 +547,9 @@ void libvlc_media_release( libvlc_media_t *p_md )
     if (!p_md)
         return;
 
-    if(!vlc_atomic_rc_dec( &p_md->refcount ))
+    p_md->i_refcount--;
+
+    if( p_md->i_refcount > 0 )
         return;
 
     uninstall_input_item_observer( p_md );
@@ -583,7 +585,7 @@ void libvlc_media_release( libvlc_media_t *p_md )
 void libvlc_media_retain( libvlc_media_t *p_md )
 {
     assert (p_md);
-    vlc_atomic_rc_inc(&p_md->refcount);
+    p_md->i_refcount++;
 }
 
 /**************************************************************************
diff --git a/lib/media_internal.h b/lib/media_internal.h
index cfeb0561785b5d6a717245b32724473030366d93..aefc731c68b877c21ac10ca24a31e4a74262443b 100644
--- a/lib/media_internal.h
+++ b/lib/media_internal.h
@@ -29,13 +29,12 @@
 
 #include <vlc_common.h>
 #include <vlc_input.h>
-#include <vlc_atomic.h>
 
 struct libvlc_media_t
 {
     libvlc_event_manager_t event_manager;
     input_item_t      *p_input_item;
-    vlc_atomic_rc_t   refcount;
+    int                i_refcount;
     libvlc_instance_t *p_libvlc_instance;
     libvlc_state_t     state;
     VLC_FORWARD_DECLARE_OBJECT(libvlc_media_list_t*) p_subitems; /* A media descriptor can have Sub items. This is the only dependancy we really have on media_list */