[x265] [PATCH] piclist: Added new class piclist for list manipulations

Gopu Govindaswamy gopu at multicorewareinc.com
Tue Oct 8 09:30:48 CEST 2013


# HG changeset patch
# User Gopu Govindaswamy <gopu at multicorewareinc.com>
# Date 1381217437 -19800
# Node ID ef8a18d9a3605f90644b563ef7976727b769e60a
# Parent  9b3a427a1009d1853bbdc30abe1fd891864e6b38
piclist: Added new class piclist for list manipulations

Created new file piclist.cpp and piclist.h for linked list manipulation, there will be
no intermediate storage in piclist, the piclist just link the TComPic object

piclist is used to Replace TComList<TComPic> and this will remove std::list dependency in X265

diff -r 9b3a427a1009 -r ef8a18d9a360 source/Lib/TLibCommon/TComPic.cpp
--- a/source/Lib/TLibCommon/TComPic.cpp	Tue Oct 08 11:12:12 2013 +0530
+++ b/source/Lib/TLibCommon/TComPic.cpp	Tue Oct 08 13:00:37 2013 +0530
@@ -59,6 +59,8 @@
     m_reconRowCount = 0;
     m_countRefEncoders = 0;
     memset(&m_lowres, 0, sizeof(m_lowres));
+    next = NULL;
+    prev = NULL;
 }
 
 TComPic::~TComPic()
diff -r 9b3a427a1009 -r ef8a18d9a360 source/Lib/TLibCommon/TComPic.h
--- a/source/Lib/TLibCommon/TComPic.h	Tue Oct 08 11:12:12 2013 +0530
+++ b/source/Lib/TLibCommon/TComPic.h	Tue Oct 08 13:00:37 2013 +0530
@@ -81,6 +81,9 @@
 
     Lowres                m_lowres;
 
+    TComPic *next;
+    TComPic *prev;
+
     TComPic();
     virtual ~TComPic();
 
diff -r 9b3a427a1009 -r ef8a18d9a360 source/common/CMakeLists.txt
--- a/source/common/CMakeLists.txt	Tue Oct 08 11:12:12 2013 +0530
+++ b/source/common/CMakeLists.txt	Tue Oct 08 13:00:37 2013 +0530
@@ -93,7 +93,8 @@
     TShortYUV.cpp TShortYUV.h mv.h
     reference.cpp reference.h
     common.cpp common.h
-    lowres.cpp lowres.h)
+    lowres.cpp lowres.h
+    piclist.cpp piclist.h)
     
 if(ENABLE_PRIMITIVES_VEC)
     add_subdirectory(vec)
diff -r 9b3a427a1009 -r ef8a18d9a360 source/common/piclist.cpp
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/source/common/piclist.cpp	Tue Oct 08 13:00:37 2013 +0530
@@ -0,0 +1,91 @@
+/*****************************************************************************
+ * Copyright (C) 2013 x265 project
+ *
+ * Authors: Gopu Govindaswamy <gopu at multicorewareinc.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02111, USA.
+ *
+ * This program is also available under a commercial proprietary license.
+ * For more information, contact us at licensing at multicorewareinc.com.
+ *****************************************************************************/
+#include "piclist.h"
+using namespace x265;
+
+void piclist::push_front(TComPic *pic)
+{
+    if (pic)
+    {
+        count++;
+        if (start == NULL)
+        {
+            start = pic;
+            end = pic;
+        }
+        else
+        {
+            pic->next = start;
+            start->prev = pic;
+            start = pic;
+        }
+    }
+}
+
+void piclist::push_back(TComPic *pic)
+{
+    if (pic)
+    {
+        count++;
+        if (end == NULL)
+        {
+            start = pic;
+            end = pic;
+        }
+        else
+        {
+            pic->prev = end;
+            end->next = pic;
+            end = pic;
+        }
+    }
+}
+
+TComPic *piclist::pop_front()
+{
+    if (!empty())
+    {
+        TComPic *temp = start;
+        start = start->next;
+        temp->next = temp->prev = NULL;
+        count--;
+        return temp;
+    }
+    else
+        return NULL;
+}
+
+TComPic *piclist::pop_back()
+{
+    if (!empty())
+    {
+        TComPic* temp = end;
+        TComPic* back = end->prev;
+        back->next = NULL;
+        end = back;
+        count--;
+        return temp;
+    }
+    else
+        return NULL;
+}
diff -r 9b3a427a1009 -r ef8a18d9a360 source/common/piclist.h
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/source/common/piclist.h	Tue Oct 08 13:00:37 2013 +0530
@@ -0,0 +1,81 @@
+/*****************************************************************************
+ * Copyright (C) 2013 x265 project
+ *
+ * Authors: Gopu Govindaswamy <gopu at multicorewareinc.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02111, USA.
+ *
+ * This program is also available under a commercial proprietary license.
+ * For more information, contact us at licensing at multicorewareinc.com.
+ *****************************************************************************/
+
+#ifndef X265_PICLIST_H
+#define X265_PICLIST_H
+
+#include "x265.h"
+#include "TLibCommon/TComPic.h"
+
+namespace x265 {
+
+class TComPic;
+class piclist {
+
+    TComPic *start;
+    TComPic *end;
+
+    /** Number of the picture in the list */
+    int count;
+
+public:
+    piclist()
+    {
+        start    = NULL;
+        end      = NULL;
+        count    = 0;
+    }
+
+    /** Pushing the picture at end of the list */
+    void push_back(TComPic *pic);
+
+    /** Pushing the picture at beginning  of the list */
+    void push_front(TComPic *pic);
+
+    /** Retrieve  the picture at end of the list */
+    TComPic* pop_back();
+
+    /** Retrieve  the picture at beginning  of the list */
+    TComPic* pop_front();
+
+    /** Number of Picture in the list */
+    UInt size() { return count; }
+
+    /** Retrieve  the beginning  picture  */
+    TComPic* first()
+    {
+        if (start)
+            return start;
+        else
+            NULL;
+    }
+
+    /** Retrieve  the end picture  */
+    TComPic* last() { return end; }
+
+    bool empty() const { return !start; }
+    operator bool() const { return !empty(); }
+};
+}
+
+#endif // ifndef X265_PICLIST_H


More information about the x265-devel mailing list