<?xml version="1.0" encoding="UTF-8"?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://purl.org/rss/1.0/" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:syn="http://purl.org/rss/1.0/modules/syndication/" xmlns:admin="http://webns.net/mvcb/">
  <channel rdf:about="http://blog.gmane.org/gmane.comp.video.ffmpeg.cvs">
    <title>gmane.comp.video.ffmpeg.cvs</title>
    <link>http://blog.gmane.org/gmane.comp.video.ffmpeg.cvs</link>
    <description/>
    <syn:updatePeriod>hourly</syn:updatePeriod>
    <syn:updateFrequency>1</syn:updateFrequency>
    <syn:updateBase>1901-01-01T00:00+00:00</syn:updateBase>
    <items>
      <rdf:Seq>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.video.ffmpeg.cvs/65270"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.video.ffmpeg.cvs/65269"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.video.ffmpeg.cvs/65268"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.video.ffmpeg.cvs/65267"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.video.ffmpeg.cvs/65266"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.video.ffmpeg.cvs/65265"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.video.ffmpeg.cvs/65264"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.video.ffmpeg.cvs/65263"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.video.ffmpeg.cvs/65262"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.video.ffmpeg.cvs/65261"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.video.ffmpeg.cvs/65260"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.video.ffmpeg.cvs/65259"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.video.ffmpeg.cvs/65258"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.video.ffmpeg.cvs/65257"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.video.ffmpeg.cvs/65256"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.video.ffmpeg.cvs/65255"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.video.ffmpeg.cvs/65254"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.video.ffmpeg.cvs/65253"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.video.ffmpeg.cvs/65252"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.video.ffmpeg.cvs/65251"/>
      </rdf:Seq>
    </items>
    <image rdf:resource="http://gmane.org/img/gmane-25t.png"/>
    <textinput rdf:resource=""/>
  </channel>
  <image rdf:about="http://gmane.org/img/gmane-25t.png">
    <title>Gmane</title>
    <url>http://gmane.org/img/gmane-25t.png</url>
    <link>http://gmane.org</link>
  </image>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.video.ffmpeg.cvs/65270">
    <title>avformat/mov: Rename alt_sample_size so its namematches what it is</title>
    <link>http://permalink.gmane.org/gmane.comp.video.ffmpeg.cvs/65270</link>
    <description>&lt;pre&gt;ffmpeg | branch: master | Michael Niedermayer &amp;lt;michaelni&amp;lt; at &amp;gt;gmx.at&amp;gt; | Sat May 25 18:38:49 2013 +0200| [5292dac34cfa9a26b47bb0b78c246e12e873b313] | committer: Michael Niedermayer

avformat/mov: Rename alt_sample_size so its name matches what it is

Signed-off-by: Michael Niedermayer &amp;lt;michaelni&amp;lt; at &amp;gt;gmx.at&amp;gt;

---

 libavformat/isom.h |    2 +-
 libavformat/mov.c  |    4 ++--
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/libavformat/isom.h b/libavformat/isom.h
index 4154baf..220b2df 100644
--- a/libavformat/isom.h
+++ b/libavformat/isom.h
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -110,7 +110,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; typedef struct MOVStreamContext {
     int ctts_index;
     int ctts_sample;
     unsigned int sample_size; ///&amp;lt; may contain value calculated from stsd or value from stsz atom
-    unsigned int alt_sample_size; ///&amp;lt; always contains sample size from stsz atom
+    unsigned int stsz_sample_size; ///&amp;lt; always contains sample size from stsz atom
     unsigned int sample_count;
     int *sample_sizes;
     int keyframe_absent;
diff --git a/libavformat/mov.c b/libavformat/mov.c
index d5e1f89..7048920 100644
--- a/libavformat/mov.c
+++ b/libavformat/mov.c
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1721,7 +1721,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; static int mov_read_stsz(MOVContext *c, AVIOContext *pb, MOVAtom atom)
         sample_size = avio_rb32(pb);
         if (!sc-&amp;gt;sample_size) /* do not overwrite value computed in stsd */
             sc-&amp;gt;sample_size = sample_size;
-        sc-&amp;gt;alt_sample_size = sample_size;
+        sc-&amp;gt;stsz_sample_size = sample_size;
         field_size = 32;
     } else {
         sample_size = 0;
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -2018,7 +2018,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; static void mov_build_index(MOVContext *mov, AVStream *st)
                 }
                 if (keyframe)
                     distance = 0;
-                sample_size = sc-&amp;gt;alt_sample_size &amp;gt; 0 ? sc-&amp;gt;alt_sample_size : sc-&amp;gt;sample_sizes[current_sample];
+                sample_size = sc-&amp;gt;stsz_sample_size &amp;gt; 0 ? sc-&amp;gt;stsz_sample_size : sc-&amp;gt;sample_sizes[current_sample];
                 if (sc-&amp;gt;pseudo_stream_id == -1 ||
                    sc-&amp;gt;stsc_data[stsc_index].id - 1 == sc-&amp;gt;pseudo_stream_id) {
                     AVIndexEntry *e = &amp;amp;st-&amp;gt;index_entries[st-&amp;gt;nb_index_entries++];
&lt;/pre&gt;</description>
    <dc:creator>Michael Niedermayer</dc:creator>
    <dc:date>2013-05-25T17:20:54</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.video.ffmpeg.cvs/65269">
    <title>avutil/md5: reindent after previous commits</title>
    <link>http://permalink.gmane.org/gmane.comp.video.ffmpeg.cvs/65269</link>
    <description>&lt;pre&gt;ffmpeg | branch: master | Giorgio Vazzana &amp;lt;mywing81&amp;lt; at &amp;gt;gmail.com&amp;gt; | Tue May 21 10:36:20 2013 +0200| [7e03886bbb46bf150ac8b457da66255b6d935eab] | committer: Michael Niedermayer

avutil/md5: reindent after previous commits

Signed-off-by: Michael Niedermayer &amp;lt;michaelni&amp;lt; at &amp;gt;gmx.at&amp;gt;

---

 libavutil/md5.c |   42 +++++++++++++++++++++---------------------
 1 file changed, 21 insertions(+), 21 deletions(-)

diff --git a/libavutil/md5.c b/libavutil/md5.c
index 21a6e57..63fc37d 100644
--- a/libavutil/md5.c
+++ b/libavutil/md5.c
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -83,11 +83,11 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; static const uint32_t T[64] = { // T[i]= fabs(sin(i+1)&amp;lt;&amp;lt;32)
         a += T[i];                                                      \
                                                                         \
         if (i &amp;lt; 32) {                                                   \
-            if (i &amp;lt; 16) a += (d ^ (b &amp;amp; (c ^ d))) + X[       i  &amp;amp; 15];   \
-            else        a += ((d &amp;amp; b) | (~d &amp;amp; c))+ X[(1 + 5*i) &amp;amp; 15];   \
+            if (i &amp;lt; 16) a += (d ^ (b &amp;amp; (c ^ d)))  + X[       i  &amp;amp; 15];  \
+            else        a += ((d &amp;amp; b) | (~d &amp;amp; c)) + X[(1 + 5*i) &amp;amp; 15];  \
         } else {                                                        \
-            if (i &amp;lt; 48) a += (b ^ c ^ d)         + X[(5 + 3*i) &amp;amp; 15];   \
-            else        a += (c ^ (b | ~d))      + X[(    7*i) &amp;amp; 15];   \
+            if (i &amp;lt; 48) a += (b ^ c ^ d)          + X[(5 + 3*i) &amp;amp; 15];  \
+            else        a += (c ^ (b | ~d))       + X[(    7*i) &amp;amp; 15];  \
         }                                                               \
         a = b + (a &amp;lt;&amp;lt; t | a &amp;gt;&amp;gt; (32 - t));                               \
     } while (0)
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -107,31 +107,31 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; static void body(uint32_t ABCD[4], uint32_t *src, int nblocks)
         X = src + n * 16;
 
 #if HAVE_BIGENDIAN
-    for (i = 0; i &amp;lt; 16; i++)
-        X[i] = av_bswap32(X[i]);
+        for (i = 0; i &amp;lt; 16; i++)
+            X[i] = av_bswap32(X[i]);
 #endif
 
 #if CONFIG_SMALL
-    for (i = 0; i &amp;lt; 64; i++) {
-        CORE(i, a, b, c, d);
-        t = d;
-        d = c;
-        c = b;
-        b = a;
-        a = t;
-    }
+        for (i = 0; i &amp;lt; 64; i++) {
+            CORE(i, a, b, c, d);
+            t = d;
+            d = c;
+            c = b;
+            b = a;
+            a = t;
+        }
 #else
 #define CORE2(i)                                                        \
-    CORE( i,   a,b,c,d); CORE((i+1),d,a,b,c);                           \
-    CORE((i+2),c,d,a,b); CORE((i+3),b,c,d,a)
+        CORE( i,   a,b,c,d); CORE((i+1),d,a,b,c);                       \
+        CORE((i+2),c,d,a,b); CORE((i+3),b,c,d,a)
 #define CORE4(i) CORE2(i); CORE2((i+4)); CORE2((i+8)); CORE2((i+12))
-    CORE4(0); CORE4(16); CORE4(32); CORE4(48);
+        CORE4(0); CORE4(16); CORE4(32); CORE4(48);
 #endif
 
-    ABCD[0] += d;
-    ABCD[1] += c;
-    ABCD[2] += b;
-    ABCD[3] += a;
+        ABCD[0] += d;
+        ABCD[1] += c;
+        ABCD[2] += b;
+        ABCD[3] += a;
     }
 }
&lt;/pre&gt;</description>
    <dc:creator>Giorgio Vazzana</dc:creator>
    <dc:date>2013-05-25T14:15:26</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.video.ffmpeg.cvs/65268">
    <title>av_d2q: fix rounding for negative values</title>
    <link>http://permalink.gmane.org/gmane.comp.video.ffmpeg.cvs/65268</link>
    <description>&lt;pre&gt;ffmpeg | branch: master | Michael Niedermayer &amp;lt;michaelni&amp;lt; at &amp;gt;gmx.at&amp;gt; | Sat May 25 15:38:07 2013 +0200| [64eacb839e0d1bde1b55d94d2ff5477d497e6d75] | committer: Michael Niedermayer

av_d2q: fix rounding for negative values

Signed-off-by: Michael Niedermayer &amp;lt;michaelni&amp;lt; at &amp;gt;gmx.at&amp;gt;

---

 libavutil/rational.c |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/libavutil/rational.c b/libavutil/rational.c
index 5b9b86f..912abc3 100644
--- a/libavutil/rational.c
+++ b/libavutil/rational.c
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -114,7 +114,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; AVRational av_d2q(double d, int max)
         return (AVRational) { d &amp;lt; 0 ? -1 : 1, 0 };
     exponent = FFMAX( (int)(log(fabs(d) + 1e-20)/LOG2), 0);
     den = 1LL &amp;lt;&amp;lt; (61 - exponent);
-    av_reduce(&amp;amp;a.num, &amp;amp;a.den, (int64_t)(d * den + 0.5), den, max);
+    av_reduce(&amp;amp;a.num, &amp;amp;a.den, llrint(d * den), den, max);
 
     return a;
 }
&lt;/pre&gt;</description>
    <dc:creator>Michael Niedermayer</dc:creator>
    <dc:date>2013-05-25T14:04:26</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.video.ffmpeg.cvs/65267">
    <title>av_d2q: Fix infinity check</title>
    <link>http://permalink.gmane.org/gmane.comp.video.ffmpeg.cvs/65267</link>
    <description>&lt;pre&gt;ffmpeg | branch: master | Michael Niedermayer &amp;lt;michaelni&amp;lt; at &amp;gt;gmx.at&amp;gt; | Sat May 25 15:22:19 2013 +0200| [de7d29063133b240a9fe2c26049b35a6a028c8a1] | committer: Michael Niedermayer

av_d2q: Fix infinity check

The old check would fail on huge but not infinite values
and the later code could then fail to handle them correctly in
some cases.

Signed-off-by: Michael Niedermayer &amp;lt;michaelni&amp;lt; at &amp;gt;gmx.at&amp;gt;

---

 libavutil/rational.c |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/libavutil/rational.c b/libavutil/rational.c
index e333f62..5b9b86f 100644
--- a/libavutil/rational.c
+++ b/libavutil/rational.c
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -110,7 +110,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; AVRational av_d2q(double d, int max)
     int64_t den;
     if (isnan(d))
         return (AVRational) { 0,0 };
-    if (isinf(d))
+    if (fabs(d) &amp;gt; INT_MAX + 3LL)
         return (AVRational) { d &amp;lt; 0 ? -1 : 1, 0 };
     exponent = FFMAX( (int)(log(fabs(d) + 1e-20)/LOG2), 0);
     den = 1LL &amp;lt;&amp;lt; (61 - exponent);
&lt;/pre&gt;</description>
    <dc:creator>Michael Niedermayer</dc:creator>
    <dc:date>2013-05-25T14:04:26</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.video.ffmpeg.cvs/65266">
    <title>lavfi/afade: add timeline support</title>
    <link>http://permalink.gmane.org/gmane.comp.video.ffmpeg.cvs/65266</link>
    <description>&lt;pre&gt;ffmpeg | branch: master | Paul B Mahol &amp;lt;onemda&amp;lt; at &amp;gt;gmail.com&amp;gt; | Sat May 25 13:08:13 2013 +0000| [8caf2da320527107b12a54c0cda5f8b5cf0117cd] | committer: Paul B Mahol

lavfi/afade: add timeline support

For correct precision one may need to use asetnsamples.

Signed-off-by: Paul B Mahol &amp;lt;onemda&amp;lt; at &amp;gt;gmail.com&amp;gt;

---

 libavfilter/af_afade.c |    1 +
 1 file changed, 1 insertion(+)

diff --git a/libavfilter/af_afade.c b/libavfilter/af_afade.c
index a6805b5..baced60 100644
--- a/libavfilter/af_afade.c
+++ b/libavfilter/af_afade.c
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -297,4 +297,5 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; AVFilter avfilter_af_afade = {
     .inputs        = avfilter_af_afade_inputs,
     .outputs       = avfilter_af_afade_outputs,
     .priv_class    = &amp;amp;afade_class,
+    .flags         = AVFILTER_FLAG_SUPPORT_TIMELINE_GENERIC,
 };
&lt;/pre&gt;</description>
    <dc:creator>Paul B Mahol</dc:creator>
    <dc:date>2013-05-25T13:30:40</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.video.ffmpeg.cvs/65265">
    <title>img2dec: support seeking with ts_from_file</title>
    <link>http://permalink.gmane.org/gmane.comp.video.ffmpeg.cvs/65265</link>
    <description>&lt;pre&gt;ffmpeg | branch: master | Michael Niedermayer &amp;lt;michaelni&amp;lt; at &amp;gt;gmx.at&amp;gt; | Sat May 25 12:06:14 2013 +0200| [760a9754ca46ecf8f5d7b31ad7e2f31a78068cd9] | committer: Michael Niedermayer

img2dec: support seeking with ts_from_file

Signed-off-by: Michael Niedermayer &amp;lt;michaelni&amp;lt; at &amp;gt;gmx.at&amp;gt;

---

 libavformat/img2dec.c |   12 ++++++++++--
 1 file changed, 10 insertions(+), 2 deletions(-)

diff --git a/libavformat/img2dec.c b/libavformat/img2dec.c
index 76ef5fb..666138b 100644
--- a/libavformat/img2dec.c
+++ b/libavformat/img2dec.c
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -393,6 +393,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; static int img_read_packet(AVFormatContext *s1, AVPacket *pkt)
         if (stat(filename, &amp;amp;img_stat))
             return AVERROR(EIO);
         pkt-&amp;gt;pts = (int64_t)img_stat.st_mtime;
+        av_add_index_entry(s1-&amp;gt;streams[0], s-&amp;gt;img_number, pkt-&amp;gt;pts, 0, 0, AVINDEX_KEYFRAME);
     } else if (!s-&amp;gt;is_pipe) {
         pkt-&amp;gt;pts      = s-&amp;gt;pts;
     }
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -433,8 +434,15 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; static int img_read_close(struct AVFormatContext* s1)
 static int img_read_seek(AVFormatContext *s, int stream_index, int64_t timestamp, int flags)
 {
     VideoDemuxData *s1 = s-&amp;gt;priv_data;
-    if (s1-&amp;gt;ts_from_file)  /* Seeking is not supported in this case */
-        return AVERROR(ESPIPE);
+    AVStream *st = s-&amp;gt;streams[0];
+
+    if (s1-&amp;gt;ts_from_file) {
+        int index = av_index_search_timestamp(st, timestamp, flags);
+        if(index &amp;lt; 0)
+            return -1;
+        s1-&amp;gt;img_number = st-&amp;gt;index_entries[index].pos;
+        return 0;
+    }
 
     if (timestamp &amp;lt; 0 || !s1-&amp;gt;loop &amp;amp;&amp;amp; timestamp &amp;gt; s1-&amp;gt;img_last - s1-&amp;gt;img_first)
         return -1;
&lt;/pre&gt;</description>
    <dc:creator>Michael Niedermayer</dc:creator>
    <dc:date>2013-05-25T10:15:52</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.video.ffmpeg.cvs/65264">
    <title>img2dec: dont set start_time/duration to invalidvalues</title>
    <link>http://permalink.gmane.org/gmane.comp.video.ffmpeg.cvs/65264</link>
    <description>&lt;pre&gt;ffmpeg | branch: master | Michael Niedermayer &amp;lt;michaelni&amp;lt; at &amp;gt;gmx.at&amp;gt; | Sat May 25 12:05:32 2013 +0200| [a753776ff5d85994952f0abcb77fa49faf76b475] | committer: Michael Niedermayer

img2dec: dont set start_time/duration to invalid values

Signed-off-by: Michael Niedermayer &amp;lt;michaelni&amp;lt; at &amp;gt;gmx.at&amp;gt;

---

 libavformat/img2dec.c |    6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/libavformat/img2dec.c b/libavformat/img2dec.c
index 5eea2df..76ef5fb 100644
--- a/libavformat/img2dec.c
+++ b/libavformat/img2dec.c
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -301,8 +301,10 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; static int img_read_header(AVFormatContext *s1)
         s-&amp;gt;img_last   = last_index;
         s-&amp;gt;img_number = first_index;
         /* compute duration */
-        st-&amp;gt;start_time = 0;
-        st-&amp;gt;duration   = last_index - first_index + 1;
+        if (!s-&amp;gt;ts_from_file) {
+            st-&amp;gt;start_time = 0;
+            st-&amp;gt;duration   = last_index - first_index + 1;
+        }
     }
 
     if (s1-&amp;gt;video_codec_id) {
&lt;/pre&gt;</description>
    <dc:creator>Michael Niedermayer</dc:creator>
    <dc:date>2013-05-25T10:15:52</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.video.ffmpeg.cvs/65263">
    <title>img2dec: Add ts_from_file option</title>
    <link>http://permalink.gmane.org/gmane.comp.video.ffmpeg.cvs/65263</link>
    <description>&lt;pre&gt;ffmpeg | branch: master | Andrey Utkin &amp;lt;andrey.krieger.utkin&amp;lt; at &amp;gt;gmail.com&amp;gt; | Fri May 24 16:50:36 2013 +0300| [70fbfd75c39bdb6bfc197348b29ce40c57042925] | committer: Michael Niedermayer

img2dec: Add ts_from_file option

Signed-off-by: Michael Niedermayer &amp;lt;michaelni&amp;lt; at &amp;gt;gmx.at&amp;gt;

---

 doc/demuxers.texi     |    4 ++++
 libavformat/img2dec.c |   18 ++++++++++++++++--
 2 files changed, 20 insertions(+), 2 deletions(-)

diff --git a/doc/demuxers.texi b/doc/demuxers.texi
index c75e1ab..9cfa954 100644
--- a/doc/demuxers.texi
+++ b/doc/demuxers.texi
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -210,6 +210,10 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; to read from. Default value is 0.
 Set the index interval range to check when looking for the first image
 file in the sequence, starting from &amp;lt; at &amp;gt;var{start_number}. Default value
 is 5.
+&amp;lt; at &amp;gt;item ts_from_file
+If set to 1, will set frame timestamp to modification time of image file. Note
+that monotonity of timestamps is not provided: images go in the same order as
+without this option. Default value is 0.
 &amp;lt; at &amp;gt;item video_size
 Set the video size of the images to read. If not specified the video
 size is guessed from the first image file in the sequence.
diff --git a/libavformat/img2dec.c b/libavformat/img2dec.c
index e32c951..5eea2df 100644
--- a/libavformat/img2dec.c
+++ b/libavformat/img2dec.c
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -20,6 +20,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
  */
 
+#include &amp;lt;sys/stat.h&amp;gt;
 #include "libavutil/avstring.h"
 #include "libavutil/log.h"
 #include "libavutil/opt.h"
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -63,6 +64,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; typedef struct {
     int start_number;
     int start_number_range;
     int frame_size;
+    int ts_from_file;
 } VideoDemuxData;
 
 static const int sizes[][2] = {
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -223,7 +225,10 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; static int img_read_header(AVFormatContext *s1)
         st-&amp;gt;need_parsing = AVSTREAM_PARSE_FULL;
     }
 
-    avpriv_set_pts_info(st, 60, s-&amp;gt;framerate.den, s-&amp;gt;framerate.num);
+    if (s-&amp;gt;ts_from_file)
+        avpriv_set_pts_info(st, 60, 1, 1);
+    else
+        avpriv_set_pts_info(st, 60, s-&amp;gt;framerate.den, s-&amp;gt;framerate.num);
 
     if (s-&amp;gt;width &amp;amp;&amp;amp; s-&amp;gt;height) {
         st-&amp;gt;codec-&amp;gt;width  = s-&amp;gt;width;
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -381,8 +386,14 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; static int img_read_packet(AVFormatContext *s1, AVPacket *pkt)
         return AVERROR(ENOMEM);
     pkt-&amp;gt;stream_index = 0;
     pkt-&amp;gt;flags       |= AV_PKT_FLAG_KEY;
-    if (!s-&amp;gt;is_pipe)
+    if (s-&amp;gt;ts_from_file) {
+        struct stat img_stat;
+        if (stat(filename, &amp;amp;img_stat))
+            return AVERROR(EIO);
+        pkt-&amp;gt;pts = (int64_t)img_stat.st_mtime;
+    } else if (!s-&amp;gt;is_pipe) {
         pkt-&amp;gt;pts      = s-&amp;gt;pts;
+    }
 
     pkt-&amp;gt;size = 0;
     for (i = 0; i &amp;lt; 3; i++) {
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -420,6 +431,8 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; static int img_read_close(struct AVFormatContext* s1)
 static int img_read_seek(AVFormatContext *s, int stream_index, int64_t timestamp, int flags)
 {
     VideoDemuxData *s1 = s-&amp;gt;priv_data;
+    if (s1-&amp;gt;ts_from_file)  /* Seeking is not supported in this case */
+        return AVERROR(ESPIPE);
 
     if (timestamp &amp;lt; 0 || !s1-&amp;gt;loop &amp;amp;&amp;amp; timestamp &amp;gt; s1-&amp;gt;img_last - s1-&amp;gt;img_first)
         return -1;
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -444,6 +457,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; static const AVOption options[] = {
     { "start_number_range", "set range for looking at the first sequence number", OFFSET(start_number_range), AV_OPT_TYPE_INT, {.i64 = 5}, 1, INT_MAX, DEC },
     { "video_size",   "set video size",                      OFFSET(width),        AV_OPT_TYPE_IMAGE_SIZE, {.str = NULL}, 0, 0,   DEC },
     { "frame_size",   "force frame size in bytes",           OFFSET(frame_size),   AV_OPT_TYPE_INT,    {.i64 = 0   }, 0, INT_MAX, DEC },
+    { "ts_from_file", "set frame timestamp from file's one", OFFSET(ts_from_file), AV_OPT_TYPE_INT,    {.i64 = 0   }, 0, 1,       DEC },
     { NULL },
 };
&lt;/pre&gt;</description>
    <dc:creator>Andrey Utkin</dc:creator>
    <dc:date>2013-05-25T09:45:59</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.video.ffmpeg.cvs/65262">
    <title>[ffmpeg-web] branch master updated. ffaf556web/doc: add Doxygen links for 1.1 and 1.2</title>
    <link>http://permalink.gmane.org/gmane.comp.video.ffmpeg.cvs/65262</link>
    <description>&lt;pre&gt;The branch, master has been updated
       via  ffaf5567f6b1b71d985510246dcac7a77492c408 (commit)
      from  bb65317293fc9080d7fc6b85a4c780b4f3008b92 (commit)


- Log -----------------------------------------------------------------
commit ffaf5567f6b1b71d985510246dcac7a77492c408
Author:     Michael Niedermayer &amp;lt;michaelni&amp;lt; at &amp;gt;gmx.at&amp;gt;
AuthorDate: Sat May 25 04:04:26 2013 +0200
Commit:     Michael Niedermayer &amp;lt;michaelni&amp;lt; at &amp;gt;gmx.at&amp;gt;
CommitDate: Sat May 25 04:04:26 2013 +0200

    web/doc: add Doxygen links for 1.1 and 1.2
    
    Signed-off-by: Michael Niedermayer &amp;lt;michaelni&amp;lt; at &amp;gt;gmx.at&amp;gt;

diff --git a/src/documentation b/src/documentation
index 2e9dc20..c0feefd 100644
--- a/src/documentation
+++ b/src/documentation
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -53,6 +53,8 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; Consult your locally installed documentation for older versions.
 &amp;lt;ul&amp;gt;
 &amp;lt;li&amp;gt;&amp;lt;a href="doxygen/trunk/index.html"&amp;gt;Doxygen documentation&amp;lt;/a&amp;gt; for current
 trunk (regenerated nightly); documentation for the
+&amp;lt;a href="doxygen/1.2/index.html"&amp;gt;1.2&amp;lt;/a&amp;gt;,
+&amp;lt;a href="doxygen/1.1/index.html"&amp;gt;1.1&amp;lt;/a&amp;gt;,
 &amp;lt;a href="doxygen/1.0/index.html"&amp;gt;1.0&amp;lt;/a&amp;gt;,
 &amp;lt;a href="doxygen/0.11/index.html"&amp;gt;0.11&amp;lt;/a&amp;gt;,
 &amp;lt;a href="doxygen/0.10/index.html"&amp;gt;0.10&amp;lt;/a&amp;gt;,

-----------------------------------------------------------------------

Summary of changes:
 src/documentation |    2 ++
 1 files changed, 2 insertions(+), 0 deletions(-)


hooks/post-receive
&lt;/pre&gt;</description>
    <dc:creator>gitolite</dc:creator>
    <dc:date>2013-05-25T02:06:11</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.video.ffmpeg.cvs/65261">
    <title>lavfi/blend: support slice threading</title>
    <link>http://permalink.gmane.org/gmane.comp.video.ffmpeg.cvs/65261</link>
    <description>&lt;pre&gt;ffmpeg | branch: master | Paul B Mahol &amp;lt;onemda&amp;lt; at &amp;gt;gmail.com&amp;gt; | Fri May 24 18:14:54 2013 +0000| [2c2e69b3a2b99a27e998e115649149ae6a23dccd] | committer: Paul B Mahol

lavfi/blend: support slice threading

Signed-off-by: Paul B Mahol &amp;lt;onemda&amp;lt; at &amp;gt;gmail.com&amp;gt;

---

 libavfilter/vf_blend.c |   79 ++++++++++++++++++++++++++++++++----------------
 1 file changed, 53 insertions(+), 26 deletions(-)

diff --git a/libavfilter/vf_blend.c b/libavfilter/vf_blend.c
index cb3d1c1..fd31653 100644
--- a/libavfilter/vf_blend.c
+++ b/libavfilter/vf_blend.c
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -65,16 +65,24 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; enum                                   { VAR_X, VAR_Y, VAR_W, VAR_H, VAR_SW, VAR
 
 typedef struct FilterParams {
     enum BlendMode mode;
-    double values[VAR_VARS_NB];
     double opacity;
     AVExpr *e;
     char *expr_str;
     void (*blend)(const uint8_t *top, int top_linesize,
                   const uint8_t *bottom, int bottom_linesize,
                   uint8_t *dst, int dst_linesize,
-                  int width, int height, struct FilterParams *param);
+                  int width, int start, int end,
+                  struct FilterParams *param, double *values);
 } FilterParams;
 
+typedef struct ThreadData {
+    AVFrame *top, *bottom, *dst;
+    AVFilterLink *inlink;
+    int plane;
+    int w, h;
+    FilterParams *param;
+} ThreadData;
+
 typedef struct {
     const AVClass *class;
     struct FFBufQueue queue_top;
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -140,21 +148,23 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; AVFILTER_DEFINE_CLASS(blend);
 static void blend_normal(const uint8_t *top, int top_linesize,
                          const uint8_t *bottom, int bottom_linesize,
                          uint8_t *dst, int dst_linesize,
-                         int width, int height, FilterParams *param)
+                         int width, int start, int end,
+                         FilterParams *param, double *values)
 {
-    av_image_copy_plane(dst, dst_linesize, top, top_linesize, width, height);
+    av_image_copy_plane(dst, dst_linesize, top, top_linesize, width, end - start);
 }
 
 #define DEFINE_BLEND(name, expr)                                      \
 static void blend_## name(const uint8_t *top, int top_linesize,       \
                           const uint8_t *bottom, int bottom_linesize, \
                           uint8_t *dst, int dst_linesize,             \
-                          int width, int height, FilterParams *param) \
+                          int width, int start, int end,              \
+                          FilterParams *param, double *values)        \
 {                                                                     \
     double opacity = param-&amp;gt;opacity;                                  \
     int i, j;                                                         \
                                                                       \
-    for (i = 0; i &amp;lt; height; i++) {                                    \
+    for (i = start; i &amp;lt; end; i++) {                                   \
         for (j = 0; j &amp;lt; width; j++) {                                 \
             dst[j] = top[j] + ((expr) - top[j]) * opacity;            \
         }                                                             \
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -199,14 +209,13 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; DEFINE_BLEND(vividlight, (B &amp;lt; 128) ? BURN(A, 2 * B) : DODGE(A, 2 * (B - 128)))
 static void blend_expr(const uint8_t *top, int top_linesize,
                        const uint8_t *bottom, int bottom_linesize,
                        uint8_t *dst, int dst_linesize,
-                       int width, int height,
-                       FilterParams *param)
+                       int width, int start, int end,
+                       FilterParams *param, double *values)
 {
     AVExpr *e = param-&amp;gt;e;
-    double *values = param-&amp;gt;values;
     int y, x;
 
-    for (y = 0; y &amp;lt; height; y++) {
+    for (y = start; y &amp;lt; end; y++) {
         values[VAR_Y] = y;
         for (x = 0; x &amp;lt; width; x++) {
             values[VAR_X]      = x;
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -359,6 +368,33 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; static int request_frame(AVFilterLink *outlink)
     return 0;
 }
 
+static int filter_slice(AVFilterContext *ctx, void *arg, int jobnr, int nb_jobs)
+{
+    ThreadData *td = arg;
+    int slice_start = (td-&amp;gt;h *  jobnr   ) / nb_jobs;
+    int slice_end   = (td-&amp;gt;h * (jobnr+1)) / nb_jobs;
+    const uint8_t *top    = td-&amp;gt;top-&amp;gt;data[td-&amp;gt;plane];
+    const uint8_t *bottom = td-&amp;gt;bottom-&amp;gt;data[td-&amp;gt;plane];
+    uint8_t *dst    = td-&amp;gt;dst-&amp;gt;data[td-&amp;gt;plane];
+    double values[VAR_VARS_NB];
+
+    values[VAR_N]  = td-&amp;gt;inlink-&amp;gt;frame_count;
+    values[VAR_T]  = td-&amp;gt;dst-&amp;gt;pts == AV_NOPTS_VALUE ? NAN : td-&amp;gt;dst-&amp;gt;pts * av_q2d(td-&amp;gt;inlink-&amp;gt;time_base);
+    values[VAR_W]  = td-&amp;gt;w;
+    values[VAR_H]  = td-&amp;gt;h;
+    values[VAR_SW] = td-&amp;gt;w / (double)td-&amp;gt;dst-&amp;gt;width;
+    values[VAR_SH] = td-&amp;gt;h / (double)td-&amp;gt;dst-&amp;gt;height;
+
+    td-&amp;gt;param-&amp;gt;blend(top + slice_start * td-&amp;gt;top-&amp;gt;linesize[td-&amp;gt;plane],
+                     td-&amp;gt;top-&amp;gt;linesize[td-&amp;gt;plane],
+                     bottom + slice_start * td-&amp;gt;bottom-&amp;gt;linesize[td-&amp;gt;plane],
+                     td-&amp;gt;bottom-&amp;gt;linesize[td-&amp;gt;plane],
+                     dst + slice_start * td-&amp;gt;dst-&amp;gt;linesize[td-&amp;gt;plane],
+                     td-&amp;gt;dst-&amp;gt;linesize[td-&amp;gt;plane],
+                     td-&amp;gt;w, slice_start, slice_end, td-&amp;gt;param, &amp;amp;values[0]);
+    return 0;
+}
+
 static void blend_frame(AVFilterContext *ctx,
                         AVFrame *top_buf,
                         AVFrame *bottom_buf,
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -366,7 +402,6 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; static void blend_frame(AVFilterContext *ctx,
 {
     BlendContext *b = ctx-&amp;gt;priv;
     AVFilterLink *inlink = ctx-&amp;gt;inputs[0];
-    FilterParams *param;
     int plane;
 
     for (plane = 0; plane &amp;lt; b-&amp;gt;nb_planes; plane++) {
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -374,20 +409,12 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; static void blend_frame(AVFilterContext *ctx,
         int vsub = plane == 1 || plane == 2 ? b-&amp;gt;vsub : 0;
         int outw = FF_CEIL_RSHIFT(dst_buf-&amp;gt;width,  hsub);
         int outh = FF_CEIL_RSHIFT(dst_buf-&amp;gt;height, vsub);
-        uint8_t *dst    = dst_buf-&amp;gt;data[plane];
-        uint8_t *top    = top_buf-&amp;gt;data[plane];
-        uint8_t *bottom = bottom_buf-&amp;gt;data[plane];
-
-        param = &amp;amp;b-&amp;gt;params[plane];
-        param-&amp;gt;values[VAR_N]  = inlink-&amp;gt;frame_count;
-        param-&amp;gt;values[VAR_T]  = dst_buf-&amp;gt;pts == AV_NOPTS_VALUE ? NAN : dst_buf-&amp;gt;pts * av_q2d(inlink-&amp;gt;time_base);
-        param-&amp;gt;values[VAR_W]  = outw;
-        param-&amp;gt;values[VAR_H]  = outh;
-        param-&amp;gt;values[VAR_SW] = outw / (double)dst_buf-&amp;gt;width;
-        param-&amp;gt;values[VAR_SH] = outh / (double)dst_buf-&amp;gt;height;
-        param-&amp;gt;blend(top, top_buf-&amp;gt;linesize[plane],
-                     bottom, bottom_buf-&amp;gt;linesize[plane],
-                     dst, dst_buf-&amp;gt;linesize[plane], outw, outh, param);
+        FilterParams *param = &amp;amp;b-&amp;gt;params[plane];
+        ThreadData td = { .top = top_buf, .bottom = bottom_buf, .dst = dst_buf,
+                          .w = outw, .h = outh, .param = param, .plane = plane,
+                          .inlink = inlink };
+
+        ctx-&amp;gt;internal-&amp;gt;execute(ctx, filter_slice, &amp;amp;td, NULL, FFMIN(outh, ctx-&amp;gt;graph-&amp;gt;nb_threads));
     }
 }
 
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -465,5 +492,5 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; AVFilter avfilter_vf_blend = {
     .inputs        = blend_inputs,
     .outputs       = blend_outputs,
     .priv_class    = &amp;amp;blend_class,
-    .flags         = AVFILTER_FLAG_SUPPORT_TIMELINE_INTERNAL,
+    .flags         = AVFILTER_FLAG_SUPPORT_TIMELINE_INTERNAL | AVFILTER_FLAG_SLICE_THREADS,
 };
&lt;/pre&gt;</description>
    <dc:creator>Paul B Mahol</dc:creator>
    <dc:date>2013-05-24T21:46:51</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.video.ffmpeg.cvs/65260">
    <title>avcodec: remove ff_get_logical_cpus()</title>
    <link>http://permalink.gmane.org/gmane.comp.video.ffmpeg.cvs/65260</link>
    <description>&lt;pre&gt;ffmpeg | branch: master | Michael Niedermayer &amp;lt;michaelni&amp;lt; at &amp;gt;gmx.at&amp;gt; | Fri May 24 20:24:29 2013 +0200| [42bb3e4db672ebb6d8b86e869602a02dcae0f4ca] | committer: Michael Niedermayer

avcodec: remove ff_get_logical_cpus()

This simplifies the code

Signed-off-by: Michael Niedermayer &amp;lt;michaelni&amp;lt; at &amp;gt;gmx.at&amp;gt;

---

 libavcodec/frame_thread_encoder.c |    2 +-
 libavcodec/internal.h             |    2 --
 libavcodec/pthread.c              |   13 +++----------
 3 files changed, 4 insertions(+), 13 deletions(-)

diff --git a/libavcodec/frame_thread_encoder.c b/libavcodec/frame_thread_encoder.c
index 98c50ab..80577ec 100644
--- a/libavcodec/frame_thread_encoder.c
+++ b/libavcodec/frame_thread_encoder.c
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -126,7 +126,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; int ff_frame_thread_encoder_init(AVCodecContext *avctx, AVDictionary *options){
         return 0;
 
     if(!avctx-&amp;gt;thread_count) {
-        avctx-&amp;gt;thread_count = ff_get_logical_cpus(avctx);
+        avctx-&amp;gt;thread_count = av_cpu_count();
         avctx-&amp;gt;thread_count = FFMIN(avctx-&amp;gt;thread_count, MAX_THREADS);
     }
 
diff --git a/libavcodec/internal.h b/libavcodec/internal.h
index 4962f06..754d062 100644
--- a/libavcodec/internal.h
+++ b/libavcodec/internal.h
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -207,8 +207,6 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; int ff_reget_buffer(AVCodecContext *avctx, AVFrame *frame);
 
 int ff_thread_can_start_frame(AVCodecContext *avctx);
 
-int ff_get_logical_cpus(AVCodecContext *avctx);
-
 int avpriv_h264_has_num_reorder_frames(AVCodecContext *avctx);
 
 /**
diff --git a/libavcodec/pthread.c b/libavcodec/pthread.c
index 41d6d62..2433880 100644
--- a/libavcodec/pthread.c
+++ b/libavcodec/pthread.c
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -146,15 +146,6 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; typedef struct FrameThreadContext {
  * limit the number of threads to 16 for automatic detection */
 #define MAX_AUTO_THREADS 16
 
-int ff_get_logical_cpus(AVCodecContext *avctx)
-{
-    int nb_cpus = av_cpu_count();
-    if  (avctx-&amp;gt;height)
-        nb_cpus = FFMIN(nb_cpus, (avctx-&amp;gt;height+15)/16);
-
-    return nb_cpus;
-}
-
 static void* attribute_align_arg worker(void *v)
 {
     AVCodecContext *avctx = v;
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -265,7 +256,9 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; static int thread_init(AVCodecContext *avctx)
     int thread_count = avctx-&amp;gt;thread_count;
 
     if (!thread_count) {
-        int nb_cpus = ff_get_logical_cpus(avctx);
+        int nb_cpus = av_cpu_count();
+        if  (avctx-&amp;gt;height)
+            nb_cpus = FFMIN(nb_cpus, (avctx-&amp;gt;height+15)/16);
         // use number of cores + 1 as thread count if there is more than one
         if (nb_cpus &amp;gt; 1)
             thread_count = avctx-&amp;gt;thread_count = FFMIN(nb_cpus + 1, MAX_AUTO_THREADS);
&lt;/pre&gt;</description>
    <dc:creator>Michael Niedermayer</dc:creator>
    <dc:date>2013-05-24T19:03:06</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.video.ffmpeg.cvs/65259">
    <title>vf_fade: remove unused function</title>
    <link>http://permalink.gmane.org/gmane.comp.video.ffmpeg.cvs/65259</link>
    <description>&lt;pre&gt;ffmpeg | branch: master | Michael Niedermayer &amp;lt;michaelni&amp;lt; at &amp;gt;gmx.at&amp;gt; | Fri May 24 20:50:15 2013 +0200| [e0f2e0fcf0acb6c78b0ecd69ad59c6c1c87b186c] | committer: Michael Niedermayer

vf_fade: remove unused function

Signed-off-by: Michael Niedermayer &amp;lt;michaelni&amp;lt; at &amp;gt;gmx.at&amp;gt;

---

 libavfilter/vf_fade.c |   19 -------------------
 1 file changed, 19 deletions(-)

diff --git a/libavfilter/vf_fade.c b/libavfilter/vf_fade.c
index b899dc1..6c9b225 100644
--- a/libavfilter/vf_fade.c
+++ b/libavfilter/vf_fade.c
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -139,25 +139,6 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; static int config_props(AVFilterLink *inlink)
     return 0;
 }
 
-static void fade_plane(int y, int h, int w,
-                       int fade_factor, int black_level, int black_level_scaled,
-                       uint8_t offset, uint8_t step, int bytes_per_plane,
-                       uint8_t *data, int line_size)
-{
-    uint8_t *p;
-    int i, j;
-
-    /* luma, alpha or rgb plane */
-    for (i = 0; i &amp;lt; h; i++) {
-        p = data + offset + (y+i) * line_size;
-        for (j = 0; j &amp;lt; w * bytes_per_plane; j++) {
-            /* s-&amp;gt;factor is using 16 lower-order bits for decimal places. */
-            *p = ((*p - black_level) * fade_factor + black_level_scaled) &amp;gt;&amp;gt; 16;
-            p+=step;
-        }
-    }
-}
-
 static int filter_slice_luma(AVFilterContext *ctx, void *arg, int jobnr,
                              int nb_jobs)
 {
&lt;/pre&gt;</description>
    <dc:creator>Michael Niedermayer</dc:creator>
    <dc:date>2013-05-24T19:03:06</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.video.ffmpeg.cvs/65258">
    <title>vf_fade: Support slice threaded alpha</title>
    <link>http://permalink.gmane.org/gmane.comp.video.ffmpeg.cvs/65258</link>
    <description>&lt;pre&gt;ffmpeg | branch: master | Michael Niedermayer &amp;lt;michaelni&amp;lt; at &amp;gt;gmx.at&amp;gt; | Fri May 24 20:02:34 2013 +0200| [0cbfbdef4a0701c162569808b8a50ff462e788d8] | committer: Michael Niedermayer

vf_fade: Support slice threaded alpha

Signed-off-by: Michael Niedermayer &amp;lt;michaelni&amp;lt; at &amp;gt;gmx.at&amp;gt;

---

 libavfilter/vf_fade.c |   35 +++++++++++++++++++++++++++--------
 1 file changed, 27 insertions(+), 8 deletions(-)

diff --git a/libavfilter/vf_fade.c b/libavfilter/vf_fade.c
index 44170fd..b899dc1 100644
--- a/libavfilter/vf_fade.c
+++ b/libavfilter/vf_fade.c
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -208,6 +208,31 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; static int filter_slice_chroma(AVFilterContext *ctx, void *arg, int jobnr,
     return 0;
 }
 
+static int filter_slice_alpha(AVFilterContext *ctx, void *arg, int jobnr,
+                              int nb_jobs)
+{
+    FadeContext *s = ctx-&amp;gt;priv;
+    AVFrame *frame = arg;
+    int plane = s-&amp;gt;is_packed_rgb ? 0 : A;
+    int slice_start = (frame-&amp;gt;height *  jobnr   ) / nb_jobs;
+    int slice_end   = (frame-&amp;gt;height * (jobnr+1)) / nb_jobs;
+    int i, j;
+
+    for (i = slice_start; i &amp;lt; slice_end; i++) {
+        uint8_t *p = frame-&amp;gt;data[plane] + i * frame-&amp;gt;linesize[plane] + s-&amp;gt;is_packed_rgb*s-&amp;gt;rgba_map[A];
+        int step = s-&amp;gt;is_packed_rgb ? 4 : 1;
+        for (j = 0; j &amp;lt; frame-&amp;gt;width; j++) {
+            /* s-&amp;gt;factor is using 16 lower-order bits for decimal
+             * places. 32768 = 1 &amp;lt;&amp;lt; 15, it is an integer representation
+             * of 0.5 and is for rounding. */
+            *p = ((*p - s-&amp;gt;black_level) * s-&amp;gt;factor + s-&amp;gt;black_level_scaled) &amp;gt;&amp;gt; 16;
+            p += step;
+        }
+    }
+
+    return 0;
+}
+
 static int filter_frame(AVFilterLink *inlink, AVFrame *frame)
 {
     AVFilterContext *ctx = inlink-&amp;gt;dst;
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -264,14 +289,8 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; static int filter_frame(AVFilterLink *inlink, AVFrame *frame)
 
     if (s-&amp;gt;factor &amp;lt; UINT16_MAX) {
         if (s-&amp;gt;alpha) {
-            // alpha only
-            int plane = s-&amp;gt;is_packed_rgb ? 0 : A; // alpha is on plane 0 for packed formats
-                                                 // or plane 3 for planar formats
-            fade_plane(0, frame-&amp;gt;height, inlink-&amp;gt;w,
-                       s-&amp;gt;factor, s-&amp;gt;black_level, s-&amp;gt;black_level_scaled,
-                       s-&amp;gt;is_packed_rgb ? s-&amp;gt;rgba_map[A] : 0, // alpha offset for packed formats
-                       s-&amp;gt;is_packed_rgb ? 4 : 1,                 // pixstep for 8 bit packed formats
-                       1, frame-&amp;gt;data[plane], frame-&amp;gt;linesize[plane]);
+            ctx-&amp;gt;internal-&amp;gt;execute(ctx, filter_slice_alpha, frame, NULL,
+                                FFMIN(frame-&amp;gt;height, ctx-&amp;gt;graph-&amp;gt;nb_threads));
         } else {
             /* luma or rgb plane */
             ctx-&amp;gt;internal-&amp;gt;execute(ctx, filter_slice_luma, frame, NULL,
&lt;/pre&gt;</description>
    <dc:creator>Michael Niedermayer</dc:creator>
    <dc:date>2013-05-24T18:21:48</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.video.ffmpeg.cvs/65257">
    <title>vf_fade: Fix alpha flag integration</title>
    <link>http://permalink.gmane.org/gmane.comp.video.ffmpeg.cvs/65257</link>
    <description>&lt;pre&gt;ffmpeg | branch: master | Michael Niedermayer &amp;lt;michaelni&amp;lt; at &amp;gt;gmx.at&amp;gt; | Fri May 24 19:55:33 2013 +0200| [a3d62f3377b2ead0c6f9a00f720b2c3a5395e71c] | committer: Michael Niedermayer

vf_fade: Fix alpha flag integration

Signed-off-by: Michael Niedermayer &amp;lt;michaelni&amp;lt; at &amp;gt;gmx.at&amp;gt;

---

 libavfilter/vf_fade.c |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/libavfilter/vf_fade.c b/libavfilter/vf_fade.c
index 5bdec11..44170fd 100644
--- a/libavfilter/vf_fade.c
+++ b/libavfilter/vf_fade.c
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -127,7 +127,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; static int config_props(AVFilterLink *inlink)
     s-&amp;gt;vsub = pixdesc-&amp;gt;log2_chroma_h;
 
     s-&amp;gt;bpp = av_get_bits_per_pixel(pixdesc) &amp;gt;&amp;gt; 3;
-    s-&amp;gt;alpha &amp;amp;= pixdesc-&amp;gt;flags &amp;amp; AV_PIX_FMT_FLAG_ALPHA;
+    s-&amp;gt;alpha &amp;amp;= !!(pixdesc-&amp;gt;flags &amp;amp; AV_PIX_FMT_FLAG_ALPHA);
     s-&amp;gt;is_packed_rgb = ff_fill_rgba_map(s-&amp;gt;rgba_map, inlink-&amp;gt;format) &amp;gt;= 0;
 
     /* use CCIR601/709 black level for studio-level pixel non-alpha components */
&lt;/pre&gt;</description>
    <dc:creator>Michael Niedermayer</dc:creator>
    <dc:date>2013-05-24T18:21:48</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.video.ffmpeg.cvs/65256">
    <title>lavfi/blend: fix SW/SH calculation</title>
    <link>http://permalink.gmane.org/gmane.comp.video.ffmpeg.cvs/65256</link>
    <description>&lt;pre&gt;ffmpeg | branch: master | Paul B Mahol &amp;lt;onemda&amp;lt; at &amp;gt;gmail.com&amp;gt; | Fri May 24 17:34:22 2013 +0000| [af125739382370541139df1eadf30eac64b95a0a] | committer: Paul B Mahol

lavfi/blend: fix SW/SH calculation

Signed-off-by: Paul B Mahol &amp;lt;onemda&amp;lt; at &amp;gt;gmail.com&amp;gt;

---

 libavfilter/vf_blend.c |    4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/libavfilter/vf_blend.c b/libavfilter/vf_blend.c
index 6b46996..cb3d1c1 100644
--- a/libavfilter/vf_blend.c
+++ b/libavfilter/vf_blend.c
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -383,8 +383,8 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; static void blend_frame(AVFilterContext *ctx,
         param-&amp;gt;values[VAR_T]  = dst_buf-&amp;gt;pts == AV_NOPTS_VALUE ? NAN : dst_buf-&amp;gt;pts * av_q2d(inlink-&amp;gt;time_base);
         param-&amp;gt;values[VAR_W]  = outw;
         param-&amp;gt;values[VAR_H]  = outh;
-        param-&amp;gt;values[VAR_SW] = outw / dst_buf-&amp;gt;width;
-        param-&amp;gt;values[VAR_SH] = outh / dst_buf-&amp;gt;height;
+        param-&amp;gt;values[VAR_SW] = outw / (double)dst_buf-&amp;gt;width;
+        param-&amp;gt;values[VAR_SH] = outh / (double)dst_buf-&amp;gt;height;
         param-&amp;gt;blend(top, top_buf-&amp;gt;linesize[plane],
                      bottom, bottom_buf-&amp;gt;linesize[plane],
                      dst, dst_buf-&amp;gt;linesize[plane], outw, outh, param);
&lt;/pre&gt;</description>
    <dc:creator>Paul B Mahol</dc:creator>
    <dc:date>2013-05-24T17:36:10</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.video.ffmpeg.cvs/65255">
    <title>fade: fix slice sizes</title>
    <link>http://permalink.gmane.org/gmane.comp.video.ffmpeg.cvs/65255</link>
    <description>&lt;pre&gt;ffmpeg | branch: master | Michael Niedermayer &amp;lt;michaelni&amp;lt; at &amp;gt;gmx.at&amp;gt; | Fri May 24 17:34:36 2013 +0200| [bca59d7745e4fa4ed5444da959d6b487cd14e994] | committer: Michael Niedermayer

fade: fix slice sizes

This more evenly distributes the load between threads

This also fixes the chroma filtering where the filter was applied twice

Signed-off-by: Michael Niedermayer &amp;lt;michaelni&amp;lt; at &amp;gt;gmx.at&amp;gt;

---

 libavfilter/vf_fade.c      |   13 +++++-----
 tests/ref/fate/filter-fade |   56 ++++++++++++++++++++++----------------------
 2 files changed, 34 insertions(+), 35 deletions(-)

diff --git a/libavfilter/vf_fade.c b/libavfilter/vf_fade.c
index 60a690b..5bdec11 100644
--- a/libavfilter/vf_fade.c
+++ b/libavfilter/vf_fade.c
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -163,9 +163,8 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; static int filter_slice_luma(AVFilterContext *ctx, void *arg, int jobnr,
 {
     FadeContext *s = ctx-&amp;gt;priv;
     AVFrame *frame = arg;
-    int slice_h     = frame-&amp;gt;height / nb_jobs;
-    int slice_start = jobnr * slice_h;
-    int slice_end   = (jobnr == nb_jobs - 1) ? frame-&amp;gt;height : (jobnr + 1) * slice_h;
+    int slice_start = (frame-&amp;gt;height *  jobnr   ) / nb_jobs;
+    int slice_end   = (frame-&amp;gt;height * (jobnr+1)) / nb_jobs;
     int i, j;
 
     for (i = slice_start; i &amp;lt; slice_end; i++) {
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -187,15 +186,15 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; static int filter_slice_chroma(AVFilterContext *ctx, void *arg, int jobnr,
 {
     FadeContext *s = ctx-&amp;gt;priv;
     AVFrame *frame = arg;
-    int slice_h     = FFALIGN(frame-&amp;gt;height / nb_jobs, 1 &amp;lt;&amp;lt; s-&amp;gt;vsub);
-    int slice_start = jobnr * slice_h;
-    int slice_end   = (jobnr == nb_jobs - 1) ? frame-&amp;gt;height : (jobnr + 1) * slice_h;
     int i, j, plane;
     const int width = FF_CEIL_RSHIFT(frame-&amp;gt;width, s-&amp;gt;hsub);
+    const int height= FF_CEIL_RSHIFT(frame-&amp;gt;height, s-&amp;gt;vsub);
+    int slice_start = (height *  jobnr   ) / nb_jobs;
+    int slice_end   = (height * (jobnr+1)) / nb_jobs;
 
     for (plane = 1; plane &amp;lt; 3; plane++) {
         for (i = slice_start; i &amp;lt; slice_end; i++) {
-            uint8_t *p = frame-&amp;gt;data[plane] + (i &amp;gt;&amp;gt; s-&amp;gt;vsub) * frame-&amp;gt;linesize[plane];
+            uint8_t *p = frame-&amp;gt;data[plane] + i * frame-&amp;gt;linesize[plane];
             for (j = 0; j &amp;lt; width; j++) {
                 /* 8421367 = ((128 &amp;lt;&amp;lt; 1) + 1) &amp;lt;&amp;lt; 15. It is an integer
                  * representation of 128.5. The .5 is for rounding
diff --git a/tests/ref/fate/filter-fade b/tests/ref/fate/filter-fade
index 446db77..9d691ce 100644
--- a/tests/ref/fate/filter-fade
+++ b/tests/ref/fate/filter-fade
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -5,20 +5,20 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 0,          3,          3,        1,   152064, 0xb4e6c735
 0,          4,          4,        1,   152064, 0xb4e6c735
 0,          5,          5,        1,   152064, 0xb4e6c735
-0,          6,          6,        1,   152064, 0x54bae320
-0,          7,          7,        1,   152064, 0x53b60b7e
-0,          8,          8,        1,   152064, 0x8bed0304
-0,          9,          9,        1,   152064, 0x509c4b78
-0,         10,         10,        1,   152064, 0x4cf869a4
-0,         11,         11,        1,   152064, 0x958b7c66
-0,         12,         12,        1,   152064, 0x45841fbf
-0,         13,         13,        1,   152064, 0xcfee57ea
-0,         14,         14,        1,   152064, 0x979ff709
-0,         15,         15,        1,   152064, 0xf7ffd5e2
-0,         16,         16,        1,   152064, 0xc42f4370
-0,         17,         17,        1,   152064, 0x71ae098f
-0,         18,         18,        1,   152064, 0x64146a42
-0,         19,         19,        1,   152064, 0xdb3068fd
+0,          6,          6,        1,   152064, 0x1f3b0657
+0,          7,          7,        1,   152064, 0x6e7547e6
+0,          8,          8,        1,   152064, 0x1197524c
+0,          9,          9,        1,   152064, 0xb4cdb293
+0,         10,         10,        1,   152064, 0xdd7cf1b8
+0,         11,         11,        1,   152064, 0x360b1005
+0,         12,         12,        1,   152064, 0x11a49918
+0,         13,         13,        1,   152064, 0xa10dd4f9
+0,         14,         14,        1,   152064, 0x78da71d7
+0,         15,         15,        1,   152064, 0x105e4cc0
+0,         16,         16,        1,   152064, 0x54bfa1c5
+0,         17,         17,        1,   152064, 0xd666559e
+0,         18,         18,        1,   152064, 0xd93faa1c
+0,         19,         19,        1,   152064, 0xb1af85ed
 0,         20,         20,        1,   152064, 0xfc7bf570
 0,         21,         21,        1,   152064, 0x9dc72412
 0,         22,         22,        1,   152064, 0x445d1d59
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -30,20 +30,20 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 0,         28,         28,        1,   152064, 0x76d2a455
 0,         29,         29,        1,   152064, 0x6dc3650e
 0,         30,         30,        1,   152064, 0x0f9d6aca
-0,         31,         31,        1,   152064, 0x11446a9b
-0,         32,         32,        1,   152064, 0x00be684c
-0,         33,         33,        1,   152064, 0xe5f9ee52
-0,         34,         34,        1,   152064, 0x21ecafb8
-0,         35,         35,        1,   152064, 0xd42c962c
-0,         36,         36,        1,   152064, 0xe00a270d
-0,         37,         37,        1,   152064, 0xc1b53878
-0,         38,         38,        1,   152064, 0xfc4e28dd
-0,         39,         39,        1,   152064, 0x9c574e39
-0,         40,         40,        1,   152064, 0xdd25cf9d
-0,         41,         41,        1,   152064, 0x32959e70
-0,         42,         42,        1,   152064, 0xac6498d5
-0,         43,         43,        1,   152064, 0xcd595d21
-0,         44,         44,        1,   152064, 0x2953ff74
+0,         31,         31,        1,   152064, 0xddae8141
+0,         32,         32,        1,   152064, 0x67cb8f24
+0,         33,         33,        1,   152064, 0xc7a72348
+0,         34,         34,        1,   152064, 0x0d7a1144
+0,         35,         35,        1,   152064, 0x39adfb3d
+0,         36,         36,        1,   152064, 0x0ecc70d5
+0,         37,         37,        1,   152064, 0xf3a6805e
+0,         38,         38,        1,   152064, 0xc3bd71ad
+0,         39,         39,        1,   152064, 0xa9be9730
+0,         40,         40,        1,   152064, 0xab9af790
+0,         41,         41,        1,   152064, 0x4c3ccd25
+0,         42,         42,        1,   152064, 0xbc83c58a
+0,         43,         43,        1,   152064, 0x94877df4
+0,         44,         44,        1,   152064, 0xa2360ea6
 0,         45,         45,        1,   152064, 0xb4e6c735
 0,         46,         46,        1,   152064, 0xb4e6c735
 0,         47,         47,        1,   152064, 0xb4e6c735
&lt;/pre&gt;</description>
    <dc:creator>Michael Niedermayer</dc:creator>
    <dc:date>2013-05-24T15:47:56</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.video.ffmpeg.cvs/65254">
    <title>yadif: fix slice sizes</title>
    <link>http://permalink.gmane.org/gmane.comp.video.ffmpeg.cvs/65254</link>
    <description>&lt;pre&gt;ffmpeg | branch: master | Michael Niedermayer &amp;lt;michaelni&amp;lt; at &amp;gt;gmx.at&amp;gt; | Fri May 24 17:33:59 2013 +0200| [1d08e4b584cc8a12fa4b63bc13829f1e6d4f2e55] | committer: Michael Niedermayer

yadif: fix slice sizes

This more evenly distributes the load between threads

Signed-off-by: Michael Niedermayer &amp;lt;michaelni&amp;lt; at &amp;gt;gmx.at&amp;gt;

---

 libavfilter/vf_yadif.c |    5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/libavfilter/vf_yadif.c b/libavfilter/vf_yadif.c
index 124ef91..8cd6f0d 100644
--- a/libavfilter/vf_yadif.c
+++ b/libavfilter/vf_yadif.c
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -190,9 +190,8 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; static int filter_slice(AVFilterContext *ctx, void *arg, int jobnr, int nb_jobs)
     int refs = s-&amp;gt;cur-&amp;gt;linesize[td-&amp;gt;plane];
     int df = (s-&amp;gt;csp-&amp;gt;comp[td-&amp;gt;plane].depth_minus1 + 8) / 8;
     int pix_3 = 3 * df;
-    int slice_h = td-&amp;gt;h / nb_jobs;
-    int slice_start = jobnr * slice_h;
-    int slice_end   = (jobnr == nb_jobs - 1) ? td-&amp;gt;h : (jobnr + 1) * slice_h;
+    int slice_start = (td-&amp;gt;h *  jobnr   ) / nb_jobs;
+    int slice_end   = (td-&amp;gt;h * (jobnr+1)) / nb_jobs;
     int y;
 
     /* filtering reads 3 pixels to the left/right; to avoid invalid reads,
&lt;/pre&gt;</description>
    <dc:creator>Michael Niedermayer</dc:creator>
    <dc:date>2013-05-24T15:47:56</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.video.ffmpeg.cvs/65253">
    <title>avfilter/vf_yadif: fix race condition</title>
    <link>http://permalink.gmane.org/gmane.comp.video.ffmpeg.cvs/65253</link>
    <description>&lt;pre&gt;ffmpeg | branch: master | Michael Niedermayer &amp;lt;michaelni&amp;lt; at &amp;gt;gmx.at&amp;gt; | Fri May 24 17:12:58 2013 +0200| [221f902f1dc167bdc0bfdff6b6af3214ae3cc1f4] | committer: Michael Niedermayer

avfilter/vf_yadif: fix race condition

Signed-off-by: Michael Niedermayer &amp;lt;michaelni&amp;lt; at &amp;gt;gmx.at&amp;gt;

---

 libavfilter/vf_yadif.c |   21 ++++++++++++---------
 1 file changed, 12 insertions(+), 9 deletions(-)

diff --git a/libavfilter/vf_yadif.c b/libavfilter/vf_yadif.c
index c26cf85..124ef91 100644
--- a/libavfilter/vf_yadif.c
+++ b/libavfilter/vf_yadif.c
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -111,6 +111,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; static void filter_line_c(void *dst1,
     FILTER(0, w, 1)
 }
 
+#define MAX_ALIGN 8
 static void filter_edges(void *dst1, void *prev1, void *cur1, void *next1,
                          int w, int prefs, int mrefs, int parity, int mode)
 {
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -126,13 +127,14 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; static void filter_edges(void *dst1, void *prev1, void *cur1, void *next1,
      * for is_not_edge should let the compiler ignore the whole branch. */
     FILTER(0, 3, 0)
 
-    dst  = (uint8_t*)dst1  + w - 3;
-    prev = (uint8_t*)prev1 + w - 3;
-    cur  = (uint8_t*)cur1  + w - 3;
-    next = (uint8_t*)next1 + w - 3;
+    dst  = (uint8_t*)dst1  + w - (MAX_ALIGN-1);
+    prev = (uint8_t*)prev1 + w - (MAX_ALIGN-1);
+    cur  = (uint8_t*)cur1  + w - (MAX_ALIGN-1);
+    next = (uint8_t*)next1 + w - (MAX_ALIGN-1);
     prev2 = (uint8_t*)(parity ? prev : cur);
     next2 = (uint8_t*)(parity ? cur  : next);
 
+    FILTER(w - (MAX_ALIGN-1), w - 3, 1)
     FILTER(w - 3, w, 0)
 }
 
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -170,13 +172,14 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; static void filter_edges_16bit(void *dst1, void *prev1, void *cur1, void *next1,
 
     FILTER(0, 3, 0)
 
-    dst   = (uint16_t*)dst1  + w - 3;
-    prev  = (uint16_t*)prev1 + w - 3;
-    cur   = (uint16_t*)cur1  + w - 3;
-    next  = (uint16_t*)next1 + w - 3;
+    dst   = (uint16_t*)dst1  + w - (MAX_ALIGN/2-1);
+    prev  = (uint16_t*)prev1 + w - (MAX_ALIGN/2-1);
+    cur   = (uint16_t*)cur1  + w - (MAX_ALIGN/2-1);
+    next  = (uint16_t*)next1 + w - (MAX_ALIGN/2-1);
     prev2 = (uint16_t*)(parity ? prev : cur);
     next2 = (uint16_t*)(parity ? cur  : next);
 
+    FILTER(w - (MAX_ALIGN/2-1), w - 3, 1)
     FILTER(w - 3, w, 0)
 }
 
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -203,7 +206,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; static int filter_slice(AVFilterContext *ctx, void *arg, int jobnr, int nb_jobs)
             uint8_t *dst  = &amp;amp;td-&amp;gt;frame-&amp;gt;data[td-&amp;gt;plane][y * td-&amp;gt;frame-&amp;gt;linesize[td-&amp;gt;plane]];
             int     mode  = y == 1 || y + 2 == td-&amp;gt;h ? 2 : s-&amp;gt;mode;
             s-&amp;gt;filter_line(dst + pix_3, prev + pix_3, cur + pix_3,
-                           next + pix_3, td-&amp;gt;w - 6,
+                           next + pix_3, td-&amp;gt;w - (3 + MAX_ALIGN/df-1),
                            y + 1 &amp;lt; td-&amp;gt;h ? refs : -refs,
                            y ? -refs : refs,
                            td-&amp;gt;parity ^ td-&amp;gt;tff, mode);
&lt;/pre&gt;</description>
    <dc:creator>Michael Niedermayer</dc:creator>
    <dc:date>2013-05-24T15:27:03</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.video.ffmpeg.cvs/65252">
    <title>Merge remote-tracking branch 'qatar/master'</title>
    <link>http://permalink.gmane.org/gmane.comp.video.ffmpeg.cvs/65252</link>
    <description>&lt;pre&gt;ffmpeg | branch: master | Michael Niedermayer &amp;lt;michaelni&amp;lt; at &amp;gt;gmx.at&amp;gt; | Fri May 24 17:14:25 2013 +0200| [fe99b1d50ea7bef67fecda10a2b3fa9c1d332814] | committer: Michael Niedermayer

Merge remote-tracking branch 'qatar/master'

* qatar/master:
  cpu: Include common.h for av_popcount64

Merged-by: Michael Niedermayer &amp;lt;michaelni&amp;lt; at &amp;gt;gmx.at&amp;gt;

---
&lt;/pre&gt;</description>
    <dc:creator>Michael Niedermayer</dc:creator>
    <dc:date>2013-05-24T15:19:34</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.video.ffmpeg.cvs/65251">
    <title>cpu: Include common.h for av_popcount64</title>
    <link>http://permalink.gmane.org/gmane.comp.video.ffmpeg.cvs/65251</link>
    <description>&lt;pre&gt;ffmpeg | branch: master | Martin Storsjö &amp;lt;martin&amp;lt; at &amp;gt;martin.st&amp;gt; | Fri May 24 12:24:27 2013 +0300| [597208fde175f7ae56f833e8cbae10cb9b709daf] | committer: Martin Storsjö

cpu: Include common.h for av_popcount64

This fixes build failures on windows since 2a6eaeaa8.

Signed-off-by: Martin Storsjö &amp;lt;martin&amp;lt; at &amp;gt;martin.st&amp;gt;

---

 libavutil/cpu.c |    1 +
 1 file changed, 1 insertion(+)

diff --git a/libavutil/cpu.c b/libavutil/cpu.c
index b95158b..17273b6 100644
--- a/libavutil/cpu.c
+++ b/libavutil/cpu.c
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -19,6 +19,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 #include "cpu.h"
 #include "config.h"
 #include "opt.h"
+#include "common.h"
 
 #if HAVE_SCHED_GETAFFINITY
 #define _GNU_SOURCE

_______________________________________________
ffmpeg-cvslog mailing list
ffmpeg-cvslog&amp;lt; at &amp;gt;ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog
&lt;/pre&gt;</description>
    <dc:creator>Martin Storsjö</dc:creator>
    <dc:date>2013-05-24T15:19:34</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.video.ffmpeg.cvs/65250">
    <title>framemd5_class and md5enc_class may not beidentical.</title>
    <link>http://permalink.gmane.org/gmane.comp.video.ffmpeg.cvs/65250</link>
    <description>&lt;pre&gt;ffmpeg | branch: master | Reimar Döffinger &amp;lt;Reimar.Doeffinger&amp;lt; at &amp;gt;gmx.de&amp;gt; | Fri May 24 14:24:46 2013 +0200| [4059c7836a57df95821505dd67322a31ee99f9e8] | committer: Reimar Döffinger

framemd5_class and md5enc_class may not be identical.

Due the crappy issue of classes having to be unique,
we cannot even have classes with identical content,
otherwise the compiler or linker is free to merge them,
giving the same result and bugs as if we had only one class.
Besides redesigning the option code to handle this correctly
I see only the option of requiring any two classes to have
different names, but the list of requirements for
AVClasses is getting kind of unmanageable.

Signed-off-by: Reimar Döffinger &amp;lt;Reimar.Doeffinger&amp;lt; at &amp;gt;gmx.de&amp;gt;

---

 libavformat/md5enc.c |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/libavformat/md5enc.c b/libavformat/md5enc.c
index cb92c0c..06c9c41 100644
--- a/libavformat/md5enc.c
+++ b/libavformat/md5enc.c
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -141,7 +141,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; static int framemd5_write_trailer(struct AVFormatContext *s)
 }
 
 static const AVClass framemd5_class = {
-    .class_name = "hash encoder class",
+    .class_name = "frame hash encoder class",
     .item_name  = av_default_item_name,
     .option     = hash_options,
     .version    = LIBAVUTIL_VERSION_INT,

_______________________________________________
ffmpeg-cvslog mailing list
ffmpeg-cvslog&amp;lt; at &amp;gt;ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog
&lt;/pre&gt;</description>
    <dc:creator>Reimar Döffinger</dc:creator>
    <dc:date>2013-05-24T14:29:11</dc:date>
  </item>
  <textinput rdf:about="http://search.gmane.org/?group=$group=gmane.comp.video.ffmpeg.cvs">
    <title>Search Engine</title>
    <description>Search the mailing list at Gmane</description>
    <name>query</name>
    <link>http://search.gmane.org/?group=$group=gmane.comp.video.ffmpeg.cvs</link>
  </textinput>
</rdf:RDF>
