Skip to content

[x265] Lossless option#515

Open
szlldm wants to merge 3 commits intomean00:masterfrom
szlldm:x265lossless
Open

[x265] Lossless option#515
szlldm wants to merge 3 commits intomean00:masterfrom
szlldm:x265lossless

Conversation

@szlldm
Copy link
Contributor

@szlldm szlldm commented Apr 14, 2024

No description provided.

@eumagga0x2a
Copy link
Collaborator

eumagga0x2a commented Apr 14, 2024

Did you try to close the video after encoding? I guess the ADM_paramList.cpp part is missing:

index dc2a65bc3..27caccc96 100644
--- a/avidemux_core/ADM_coreUtils/src/ADM_paramList.cpp
+++ b/avidemux_core/ADM_coreUtils/src/ADM_paramList.cpp
@@ -159,6 +159,11 @@ static bool compressReadFromString(COMPRES_PARAMS *params,const char *str)
         params->mode=COMPRESS_SAME;
         return true;
     }
+    if(!strcasecmp(str,"LOSSLESS"))
+    {
+        params->mode=COMPRESS_LOSSLESS;
+        return true;
+    }
     // all other are in the form a=b
     strcpy(tmp,str);
     char *s=tmp;
@@ -197,8 +202,9 @@ bool ADM_compressWriteToString(COMPRES_PARAMS *params,  char **str)
         case COMPRESS_SAME:  sprintf(tmp,"SAME");break;
         case COMPRESS_2PASS_BITRATE: sprintf(tmp,"2PASSBITRATE=%" PRIu32,params->avg_bitrate);break;
         case COMPRESS_AQ:    sprintf(tmp,"AQ=%" PRIu32,params->qz);break;
+        case COMPRESS_LOSSLESS: sprintf(tmp,"LOSSLESS");break;
         default:
-            ADM_error("Unknown compressin mode \n");
+            ADM_error("Unknown compression mode\n");
             return false;
     }
     *str=ADM_strdup(tmp);

@szlldm
Copy link
Contributor Author

szlldm commented Apr 14, 2024

Thanks. It just needed a minor tweak to work properly.

case COMPRESS_SAME: sprintf(tmp,"SAME");break;
case COMPRESS_2PASS_BITRATE: sprintf(tmp,"2PASSBITRATE=%" PRIu32,params->avg_bitrate);break;
case COMPRESS_AQ: sprintf(tmp,"AQ=%" PRIu32,params->qz);break;
case COMPRESS_LOSSLESS: sprintf(tmp,"LOSSLESS=1");break;
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

For me, it feels somewhat awkward to write "general.params=LOSSLESS=1" when "general.params=LOSSLESS=0" means exactly the same. Could you please explain the rationale?

With "general.params=LOSSLESS" we can exit compressReadFromString() early like in case of "general.params=SAME" (just not really used anywhere) and it is free from ambiguity, IMHO.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In my Q&D version to try out the lossless mode, I ended up with the same changes here, but, for a proper implementation, I'd love to see all options overridden by lossless mode systematically disabled. Maybe not trying to rush it in 2.8.2 but doing it thoroughly right thereafter?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants