Partial button has no effect in Video Filter window

Started by joe1203, January 12, 2013, 04:46:56 AM

Previous topic - Next topic

joe1203

I tried 2.6.0, 2.6.1 and nightly r8380, after opening a video, selecting the codec and adding a video filter (e.g. Mplayer delogo), clicking the partial button does not show the Partial Video Filter pop up. But it works in v2.5.6.

I am using Win7 64 and avidemux 32bits.

Any clue? :o :o

Jan Gruuthuse

Me guessing: Not enabled for 2.6, 2.6.1: frame editing not possible in time based 2.6. ??

ajschult

If it shows up in the GUI, it should work.

The partial button has code to implement the behavior, but it's all comment out.  Uncommented, the code doesn't compile.

This would make the GUI stop pretending to handle it:


Index: avidemux/qt4/ADM_userInterfaces/ADM_filters/Q_mainfilter.cpp
===================================================================
--- avidemux/qt4/ADM_userInterfaces/ADM_filters/Q_mainfilter.cpp        (revision 8383)
+++ avidemux/qt4/ADM_userInterfaces/ADM_filters/Q_mainfilter.cpp        (working copy)
@@ -509,7 +509,7 @@
     connect((ui.pushButtonRemove),SIGNAL(clicked(bool)),this,SLOT(remove(bool)));
     connect((ui.toolButtonUp),SIGNAL(clicked(bool)),this,SLOT(up(bool)));
     connect((ui.toolButtonDown),SIGNAL(clicked(bool)),this,SLOT(down(bool)));
-    connect((ui.toolButtonPartial),SIGNAL(clicked(bool)),this,SLOT(partial(bool)));
+    //connect((ui.toolButtonPartial),SIGNAL(clicked(bool)),this,SLOT(partial(bool)));
     connect(ui.buttonClose, SIGNAL(clicked(bool)), this, SLOT(accept()));
#if 0
     connect(ui.pushButtonDVD, SIGNAL(clicked(bool)), this, SLOT(DVD(bool)));
Index: avidemux/qt4/ADM_userInterfaces/ADM_filters/mainfilter.ui
===================================================================
--- avidemux/qt4/ADM_userInterfaces/ADM_filters/mainfilter.ui   (revision 8383)
+++ avidemux/qt4/ADM_userInterfaces/ADM_filters/mainfilter.ui   (working copy)
@@ -122,7 +122,7 @@
          </property>
         </widget>
        </item>
-       <item>
+  <!-- <item>
         <widget class="QToolButton" name="toolButtonPartial">
          <property name="sizePolicy">
           <sizepolicy hsizetype="Fixed" vsizetype="Preferred">
@@ -134,7 +134,7 @@
           <string>P&amp;artial</string>
          </property>
         </widget>
-       </item>
+       </item> -->
        <item>
         <widget class="QToolButton" name="toolButtonDown">
          <property name="text">
@@ -416,7 +416,7 @@
   <tabstop>listWidgetActive</tabstop>
   <tabstop>toolButtonAdd</tabstop>
   <tabstop>toolButtonConfigure</tabstop>
-  <tabstop>toolButtonPartial</tabstop>
+  <!-- <tabstop>toolButtonPartial</tabstop> -->
   <tabstop>toolButtonDown</tabstop>
   <tabstop>toolButtonUp</tabstop>
   <tabstop>pushButtonRemove</tabstop>

joe1203

Quote from: ajschult on January 12, 2013, 02:48:07 PM
If it shows up in the GUI, it should work.

The partial button has code to implement the behavior, but it's all comment out.  Uncommented, the code doesn't compile.

This would make the GUI stop pretending to handle it:


Index: avidemux/qt4/ADM_userInterfaces/ADM_filters/Q_mainfilter.cpp
===================================================================
--- avidemux/qt4/ADM_userInterfaces/ADM_filters/Q_mainfilter.cpp        (revision 8383)
+++ avidemux/qt4/ADM_userInterfaces/ADM_filters/Q_mainfilter.cpp        (working copy)
@@ -509,7 +509,7 @@
     connect((ui.pushButtonRemove),SIGNAL(clicked(bool)),this,SLOT(remove(bool)));
     connect((ui.toolButtonUp),SIGNAL(clicked(bool)),this,SLOT(up(bool)));
     connect((ui.toolButtonDown),SIGNAL(clicked(bool)),this,SLOT(down(bool)));
-    connect((ui.toolButtonPartial),SIGNAL(clicked(bool)),this,SLOT(partial(bool)));
+    //connect((ui.toolButtonPartial),SIGNAL(clicked(bool)),this,SLOT(partial(bool)));
     connect(ui.buttonClose, SIGNAL(clicked(bool)), this, SLOT(accept()));
#if 0
     connect(ui.pushButtonDVD, SIGNAL(clicked(bool)), this, SLOT(DVD(bool)));
Index: avidemux/qt4/ADM_userInterfaces/ADM_filters/mainfilter.ui
===================================================================
--- avidemux/qt4/ADM_userInterfaces/ADM_filters/mainfilter.ui   (revision 8383)
+++ avidemux/qt4/ADM_userInterfaces/ADM_filters/mainfilter.ui   (working copy)
@@ -122,7 +122,7 @@
          </property>
         </widget>
        </item>
-       <item>
+  <!-- <item>
         <widget class="QToolButton" name="toolButtonPartial">
          <property name="sizePolicy">
           <sizepolicy hsizetype="Fixed" vsizetype="Preferred">
@@ -134,7 +134,7 @@
           <string>P&amp;artial</string>
          </property>
         </widget>
-       </item>
+       </item> -->
        <item>
         <widget class="QToolButton" name="toolButtonDown">
          <property name="text">
@@ -416,7 +416,7 @@
   <tabstop>listWidgetActive</tabstop>
   <tabstop>toolButtonAdd</tabstop>
   <tabstop>toolButtonConfigure</tabstop>
-  <tabstop>toolButtonPartial</tabstop>
+  <!-- <tabstop>toolButtonPartial</tabstop> -->
   <tabstop>toolButtonDown</tabstop>
   <tabstop>toolButtonUp</tabstop>
   <tabstop>pushButtonRemove</tabstop>


Sadly this feature is disabled but not listed in the changelog. And 2.5.6 is less stable when handling AVC/AAC/MP4. Hope new version with restored "partial" function will come out soon

DigitalDave

Hello,

I normally would wait for a fix, but I thought I might be able to help you identify when the 'partial' filter option stopped working.

I use W7 x64 SP1. 

I have been using your app for many years. Very happy with it.
However today, I realized this feature no longer works. I tried BOTH 32 and 64 bit versions of official releases and betas.

So, I began installing / uninstalling until I found the last version that still worked.

Version 2.4.4 released 2012-04-03 is the last release that the 'partial' filter option still works.

The 2.6 releases do nothing when clicking.
The 2.5 releases exit to desktop with out a error message when entering any numbers in the frame fields.

Reluctantly, I had to keep this version to apply color filter adjustments to specific places in my videos.

I hope you can identify where your newer releases have lost the code in this working release.

Thank you for your work.



ratte

I'd like to push this question again. The missing partial filter is the main reason for me to still use avidemux 2.5. Isn't there a chance to get back a partial filter in 2.6. Maybe it could base on the current selection (A and B mark) instead of frame numbers or on time selection?

mean


AQUAR

#9
Does it have to be frame accurate?
If not, could a partial filter that is limited to IDR frames be easier to do.

DigitalDave mentioned that this filter doen't work anymore after v2.4.4, but with v2.5.6 it works.

I don't really use this filter myself, but was just wondering for others that seem to want this.
 

ratte

It would not matter if the filter starts one frame to early or stops one frame to late. The opposite (start to late or stop to early) would be a problem.

To have start and stop on IDR frames only would be better than nothing but far away from perfect.

But, what' is the problem with the partial filter in 2.6?  As I can step the movie frame by frame and cut it at any frame/time mark, why can a filter not start >= any time mark and stop <= another one? Currently I have to split the movie into parts, filter them and join them again. That's annoying and I often need two encoding runs, which decreases quality. Because if this, I often still use 2.5.6, but that needs additional sound adjustment and working with more than one sound track is annoying.

AQUAR

#11
Quote from: ratte on December 20, 2013, 07:58:01 AM
It would not matter if the filter starts one frame to early or stops one frame to late. The opposite (start to late or stop to early) would be a problem.

Just my thought:
2.6 is time based to cope with VFR AVC.
Most of the frames you are looking at are virtual onces that have been 'reordered' by the decoder.
Consequence is that you don't have an accurate frame count value for these frames.
Therefore you don't know if you are going to start late or stop early with the partial filter (problem!).

I don't think there is any frame accurate editing with 2.6 except maybe for cuts at IDR frames.

mean

It is frame accurate
The problem is creating a magic T
Normally the filter chain is

XX=>Filter1=>Filter2=>...

For partial to work, you have to do

XX=>Filter1=>Partial         =>...
                       +=>Filter2^

The problem is to keep Filter1 operational

2.5 could request any frame in any order, 2.6 can only get next frame
So if filter2 is pulling more frames, e.g. deinterlace for example, when you go out of the partial window, you'd loose several frames
It's even worse if filter2 is changing the timestamps of each frame

The easy solution is to only partial for filters that are not changing time and not requesting frames in advance but it limits it a lot


ratte

Does the "next frame" has only it's time stamp after processing the previous filter or is the original time stamp also known?
If it has both, cutting could also be something like a partial copy filter.

Or in other words, couldn't a partial filter something like a virtual cut with filtering the segment only? I know, overlapping partial filter within this would result in several virtual segments:

x:123467890ABCDEFGHIJKLMN
a:   ==========
b:       ============

(x is the movie in frames, a the partial filterA, b the partial filterB
would result in:

y: 123 filterA(45678) filterB(filterA(90ABCD)) filterB(EFGHIJ) KLMN


BTW: Currently I need partial filters for blacken border, mplayer delogo, blend, and some times gaussian. Some times I need several partial delogo filters with overlapping start and stop points.

AQUAR

#14
Thanks mean for that explanation - it would be a good addition to the wiki.

Just a thought:
Is it possible to code a return to the nearest previous IDR frame on exit of the partial filter, instead of going to the next frame?
Then if you limit the partial on these types of filters to IDR frames, no frames or continuity would be lost.
The filter segmentation would be coarser, but still very practical and better than nothing.
Even if done globally to all filters the trade off might be acceptable (limited cut points on all filters => but more filters).