diff --git a/doc/APIchanges b/doc/APIchanges
index 2bb45fad10ed03b410adb40d415205eadc4114ff..8df27a87cd3ce9d09721fb42d9f3b9d286265d92 100644
--- a/doc/APIchanges
+++ b/doc/APIchanges
@@ -15,6 +15,9 @@ libavutil:     2012-10-22
 
 API changes, most recent first:
 
+2013-08-xx - xxxxxxx - lavc 55.11.0 - avcodec.h
+  Add output_picture_number to AVCodecParserContext.
+
 2013-07-XX - xxxxxxx - XXXXXXXXXXXXXX - avcodec.h
   Add avcodec_chroma_pos_to_enum()
   Add avcodec_enum_to_chroma_pos()
diff --git a/libavcodec/avcodec.h b/libavcodec/avcodec.h
index 17c48ddde1d0f4d4546df415ca94befc0d8b0f26..ae6625f5b9026825db6162a9cc11b7c9751ea35c 100644
--- a/libavcodec/avcodec.h
+++ b/libavcodec/avcodec.h
@@ -3960,6 +3960,14 @@ typedef struct AVCodecParserContext {
      * AV_PICTURE_STRUCTURE_TOP_FIELD.
      */
     enum AVPictureStructure picture_structure;
+
+    /**
+     * Picture number incremented in presentation or output order.
+     * This field may be reinitialized at the first picture of a new sequence.
+     *
+     * For example, this corresponds to H.264 PicOrderCnt.
+     */
+    int output_picture_number;
 } AVCodecParserContext;
 
 typedef struct AVCodecParser {
diff --git a/libavcodec/h264.c b/libavcodec/h264.c
index 2cb98df1f9a16df05badb1486ee141a54f4da6e7..c08720876bc3d71fadfebbc4c020adf6b09fcf48 100644
--- a/libavcodec/h264.c
+++ b/libavcodec/h264.c
@@ -2768,8 +2768,7 @@ int ff_init_poc(H264Context *h, int pic_field_poc[2], int *pic_poc)
         pic_field_poc[0] = field_poc[0];
     if (h->picture_structure != PICT_TOP_FIELD)
         pic_field_poc[1] = field_poc[1];
-    if (pic_poc)
-        *pic_poc = FFMIN(pic_field_poc[0], pic_field_poc[1]);
+    *pic_poc = FFMIN(pic_field_poc[0], pic_field_poc[1]);
 
     return 0;
 }
diff --git a/libavcodec/h264_parser.c b/libavcodec/h264_parser.c
index db5adf723ebf1f2f81e506fd3b79e5a0859a0eee..f6bd1b6c06e2f7a1b616d2760624427436d9752b 100644
--- a/libavcodec/h264_parser.c
+++ b/libavcodec/h264_parser.c
@@ -288,7 +288,7 @@ static inline int parse_nal_units(AVCodecParserContext *s,
                     h->delta_poc[1] = get_se_golomb(&h->gb);
             }
 
-            ff_init_poc(h, field_poc, NULL);
+            ff_init_poc(h, field_poc, &s->output_picture_number);
 
             if (h->sps.pic_struct_present_flag) {
                 switch (h->sei_pic_struct) {
diff --git a/libavcodec/version.h b/libavcodec/version.h
index 06777bf3a0c05d6a7b2bd1e7b908ff67f12c85ac..38c7029ebfabd0eac038e6d85074d9a14df1dada 100644
--- a/libavcodec/version.h
+++ b/libavcodec/version.h
@@ -29,7 +29,7 @@
 #include "libavutil/avutil.h"
 
 #define LIBAVCODEC_VERSION_MAJOR 55
-#define LIBAVCODEC_VERSION_MINOR  19
+#define LIBAVCODEC_VERSION_MINOR  20
 #define LIBAVCODEC_VERSION_MICRO 100
 
 #define LIBAVCODEC_VERSION_INT  AV_VERSION_INT(LIBAVCODEC_VERSION_MAJOR, \