Bug 67544 - FILESAVE: Slide transistion sound(other sound) is not included in presentation file
Summary: FILESAVE: Slide transistion sound(other sound) is not included in presentatio...
Status: NEW
Alias: None
Product: LibreOffice
Classification: Unclassified
Component: Impress (show other bugs)
Version:
(earliest affected)
4.1.0.4 release
Hardware: All All
: medium normal
Assignee: Not Assigned
URL:
Whiteboard: BSA target:5.3.0
Keywords:
: 57291 100540 120569 161473 (view as bug list)
Depends on:
Blocks: Slide-Transitions Media
  Show dependency treegraph
 
Reported: 2013-07-30 15:28 UTC by Zeki Bildirici
Modified: 2026-01-31 21:07 UTC (History)
17 users (show)

See Also:
Crash report or crash signature:


Attachments
Other Sound dialog (117.08 KB, image/jpeg)
2013-07-30 15:28 UTC, Zeki Bildirici
Details
Insert - Movie or Sound dialog (138.18 KB, image/jpeg)
2013-07-30 15:29 UTC, Zeki Bildirici
Details
File open dialog (57.65 KB, image/png)
2022-12-12 13:37 UTC, Alexey Rukin
Details
The resulting presentation (24.44 KB, application/vnd.oasis.opendocument.presentation)
2022-12-12 13:39 UTC, Alexey Rukin
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Zeki Bildirici 2013-07-30 15:28:37 UTC
Created attachment 83305 [details]
Other Sound dialog

Problem description: 

When adding a custom slide transistion sound, Impress only creates link to that file and plays the sound locally. 

However if you send the presentation to another computer or USB etc, the custom slide trans. sound does not work.

The problem is caused by the Other Sound dialog,under
Slide Transition -> Sound selection, which misses include sound file and inserst the file directly as link.(Screenshot1) While Insert - Movie or Sound dialog inserts direcly the sound file to the presentation, and has Link option too(screenshot2)

Expected behavior:

Having custom transistion sounds within the presentation file which may enable to use custom transition sounds on other computers.
 
              
Operating System: All
Version: 4.1.0.4 release
Comment 1 Zeki Bildirici 2013-07-30 15:29:17 UTC
Created attachment 83306 [details]
Insert - Movie or Sound dialog
Comment 2 David Tardon 2013-07-31 05:13:11 UTC
Should be relatively simple to add this, probably by using the standard open dialog implementation (I do not see anything that would require special treatment). The "Other sound..." dialog is implemented by class SdOpenSoundFileDialog in sd/source/ui/dlg/filedlg.cxx , "Insert -> Movie or Sound" uses the standard open dialog implementation, run from function MediaWindow::executeMediaURLDialog() in avmedia/source/viewer/mediawindow.cxx .
Comment 3 Samuel Mehrbrodt 2013-10-01 21:50:16 UTC
*** Bug 57291 has been marked as a duplicate of this bug. ***
Comment 4 Björn Michaelsen 2013-10-04 18:47:12 UTC
adding LibreOffice developer list as CC to unresolved EasyHacks for better visibility.

see e.g. http://nabble.documentfoundation.org/minutes-of-ESC-call-td4076214.html for details
Comment 5 vulcain 2014-01-30 11:11:10 UTC
Duplicate of bug 44223 ??
Comment 6 Jan Holesovsky 2014-03-20 16:47:46 UTC
Having researched some details here, for the embedding itself, I'd try to use code like http://cgit.freedesktop.org/libreoffice/core/tree/sd/source/ui/view/sdview4.cxx#n277

See the 'realURL' - if it is a link, then the URL is copied there, if it should be embedded, ::avmedia::EmbedMedia will take care of the embedding, and will provide you with the updated URL that will point to the embedded object.

You want to do this in sd/source/ui/animations/CustomAnimationDialog.cxx just after aFile = aFileDialog.GetPath(); I guess - hope this works :-)
Comment 7 Vishv 2014-04-04 18:45:49 UTC
Hi,

My patch related to this bug is at https://gerrit.libreoffice.org/#/c/8700/ . I have tried much but I am kind of stuck since few days. Any help will be really helpful. 
In-order to embed the music in the slidetransition, we have to use EmbedMedia() function.  I have used that function, but I am not successful in embedding the media file.

The EmbedMedia() takes a reference of XModel object and XModel itself takes a reference of SdDrawDocument. And it is initialized like this:
	XModel(GetDoc().GetObjectShell()->GetModel()).

So here GetDoc() returns a reference of SdDrawDocument(i.e SdDrawDocument&) and then it proceeds accordingly.
 
In the SlideTransitionPane.cxx, I have access to "SdDrawDocument* mpDrawDoc". So I do like this:
      uno::Reference<frame::XModel> const xModel(mpDrawDoc->GetObjectShell()->GetModel());
And then use this xModel in the EmbedMedia().

The above code don't give me any compilation error. But, when I open an instance of Impress from my terminal, I could see this messages http://pastebin.ca/2679016. And this seems to be the reason behind the EmbedMedia() not able to create & store the .mp3 file in "Media/" (which is vnd.sun.star.Package:Media).

So I think, I require a reference to SdDrawDocument, but I am not sure how can I get one. Typecasting is not possible because 'Operator=' is not defined for "SdDrawDocument". 

My current patch includes a changed dialog and also it's compiling correctly.

So can someone please look at my patch and let me know their views and guide me?
And let me know if I am in the right direction.
Comment 8 Thorsten Behrens (allotropia) 2014-05-15 07:39:45 UTC
(In reply to comment #7)
> The above code don't give me any compilation error. But, when I open an
> instance of Impress from my terminal, I could see this messages
> http://pastebin.ca/2679016. And this seems to be the reason behind the
> EmbedMedia() not able to create & store the .mp3 file in "Media/" (which is
> vnd.sun.star.Package:Media).
> 
That paste is not really helpful, since you can't tell which part of your code is triggering it. Have you debugged this (both a working call to EmbedMedia, and your snippets)?
Comment 9 Vishv 2014-05-18 08:57:17 UTC
(In reply to comment #8)
> (In reply to comment #7)
> > The above code don't give me any compilation error. But, when I open an
> > instance of Impress from my terminal, I could see this messages
> > http://pastebin.ca/2679016. And this seems to be the reason behind the
> > EmbedMedia() not able to create & store the .mp3 file in "Media/" (which is
> > vnd.sun.star.Package:Media).
> > 
> That paste is not really helpful, since you can't tell which part of your
> code is triggering it. Have you debugged this (both a working call to
> EmbedMedia, and your snippets)?

Yes, I had debugged the working call to "EmbedMedia()", when called by (1) "Insert->Media and Sound"  and (2) and for this case (slide transitions). It seems to work similarly in both cases. But, still for the second case it does not embed the music file.
Comment 10 Zeki Bildirici 2015-08-23 14:31:09 UTC
(In reply to Vishv from comment #9)
> (In reply to comment #8)
> > (In reply to comment #7)
> > > The above code don't give me any compilation error. But, when I open an
> > > instance of Impress from my terminal, I could see this messages
> > > http://pastebin.ca/2679016. And this seems to be the reason behind the
> > > EmbedMedia() not able to create & store the .mp3 file in "Media/" (which is
> > > vnd.sun.star.Package:Media).
> > > 
> > That paste is not really helpful, since you can't tell which part of your
> > code is triggering it. Have you debugged this (both a working call to
> > EmbedMedia, and your snippets)?
> 
> Yes, I had debugged the working call to "EmbedMedia()", when called by (1)
> "Insert->Media and Sound"  and (2) and for this case (slide transitions). It
> seems to work similarly in both cases. But, still for the second case it
> does not embed the music file.

Ping :)
Comment 11 Robinson Tryon (qubit) 2015-12-14 06:22:23 UTC Comment hidden (obsolete)
Comment 12 jani 2016-02-17 07:30:19 UTC
Removing assigned as it is not

There are currently no code pointer ?
Comment 13 Chris Sherlock 2016-02-17 09:09:14 UTC
NEEDINFO should only be set if we need more information to diagnose or replicate the issue. Best not to use it if we just need to provide code pointers. Therefore setting status to NEW.
Comment 14 jani 2016-02-17 10:06:29 UTC
(In reply to Chris Sherlock from comment #13)
> NEEDINFO should only be set if we need more information to diagnose or
> replicate the issue. Best not to use it if we just need to provide code
> pointers. Therefore setting status to NEW.


Well let me put it differently, it is only an EasyHack when we have code pointers, so having it as "NEW" causes problems e.g. in our Wiki, because it is shown as a ready to go EasyHack.

I opted not to remove the EASYHACK tag, because it would be confusing, but setting NEEDINFO, with the clear comment asking for a code pointer, seems like a good hint to the reporter.

we actually discussed this in ESC a while ago, and I am tasked with walking through all EasyHacks and make sure they are valid with code pointers etc.

A new contributor actually NEEDINFO to be able to diagnose the problem (a code pointeer), so seen from that perspective it cannot be wrong.
Comment 15 Samuel Mehrbrodt 2016-06-30 10:04:55 UTC
*** Bug 100540 has been marked as a duplicate of this bug. ***
Comment 16 Samuel Mehrbrodt 2016-07-11 13:07:21 UTC
WIP Patch here: https://gerrit.libreoffice.org/#/c/26854/
Comment 17 Commit Notification 2016-11-11 12:40:44 UTC
Samuel Mehrbrodt committed a patch related to this issue.
It has been pushed to "master":

http://cgit.freedesktop.org/libreoffice/core/commit/?id=518e1999c4a77e6a8fb7ddf02568461d0343bb9a

tdf#67544 Embed slide transition sound in the presentation

It will be available in 5.3.0.

The patch should be included in the daily builds available at
http://dev-builds.libreoffice.org/daily/ in the next 24-48 hours. More
information about daily builds can be found at:
http://wiki.documentfoundation.org/Testing_Daily_Builds

Affected users are encouraged to test the fix and report feedback.
Comment 18 Al-Ayoubi 2016-12-16 18:48:13 UTC
(In reply to Commit Notification from comment #17)
> Samuel Mehrbrodt committed a patch related to this issue.
> It has been pushed to "master":
> 
> http://cgit.freedesktop.org/libreoffice/core/commit/
> ?id=518e1999c4a77e6a8fb7ddf02568461d0343bb9a
> 
> tdf#67544 Embed slide transition sound in the presentation
> 
> It will be available in 5.3.0.
> 
> The patch should be included in the daily builds available at
> http://dev-builds.libreoffice.org/daily/ in the next 24-48 hours. More
> information about daily builds can be found at:
> http://wiki.documentfoundation.org/Testing_Daily_Builds
> 
> Affected users are encouraged to test the fix and report feedback.

Salamu alaikum,

Hi every one and thank you for this great project Libreoffice.

I'm a mother of two children and I'm using both LibreOffice Impress and GNU/Linux (Debian, Mint) OS to create slideshow presentations as educational videos for my 2 kids.

Here are some of my educational videos created with Libreoffice Impress so far:

https://www.youtube.com/watch?v=otdkoNp1bbU

https://www.youtube.com/watch?v=NWzVH-BA5zI

https://www.youtube.com/watch?v=O4BUx7_COjE

But in all of them, I encounter the problem of adding Sounds to Transitions and Custom Animations, as mentioned here : 

https://bugs.documentfoundation.org/show_bug.cgi?id=104678


Since i'm not a developer, All i can do is to file a bug if not already done. That is why I hope that you Developper people and ICT guys can help us non-too-ICT oriented people, use this great Office Suite to deal with our daily ICT needs.

Thank you all!
Comment 19 Al-Ayoubi 2016-12-19 17:52:04 UTC
(In reply to Al-Ayoubi from comment #18)
> (In reply to Commit Notification from comment #17)
> > Samuel Mehrbrodt committed a patch related to this issue.
> > It has been pushed to "master":
> > 
> > http://cgit.freedesktop.org/libreoffice/core/commit/
> > ?id=518e1999c4a77e6a8fb7ddf02568461d0343bb9a
> > 
> > tdf#67544 Embed slide transition sound in the presentation
> > 
> > It will be available in 5.3.0.
> > 
> > The patch should be included in the daily builds available at
> > http://dev-builds.libreoffice.org/daily/ in the next 24-48 hours. More
> > information about daily builds can be found at:
> > http://wiki.documentfoundation.org/Testing_Daily_Builds
> > 
> > Affected users are encouraged to test the fix and report feedback.
> 
> Salamu alaikum,
> 
> Hi every one and thank you for this great project Libreoffice.
> 
> I'm a mother of two children and I'm using both LibreOffice Impress and
> GNU/Linux (Debian, Mint) OS to create slideshow presentations as educational
> videos for my 2 kids.
> 
> Here are some of my educational videos created with Libreoffice Impress so
> far:
> 
> https://www.youtube.com/watch?v=otdkoNp1bbU
> 
> https://www.youtube.com/watch?v=NWzVH-BA5zI
> 
> https://www.youtube.com/watch?v=O4BUx7_COjE
> 
> But in all of them, I encounter the problem of adding Sounds to Transitions
> and Custom Animations, as mentioned here : 
> 
> https://bugs.documentfoundation.org/show_bug.cgi?id=104678
> 
> 
> Since i'm not a developer, All i can do is to file a bug if not already
> done. That is why I hope that you Developper people and ICT guys can help us
> non-too-ICT oriented people, use this great Office Suite to deal with our
> daily ICT needs.
> 
> Thank you all!

I've tested the build that here is :

Version: 5.3.0.0.beta2+
Build ID: 6eb2598a5d052220c6b569d1b49e80800850ac06
CPU Threads: 4; OS Version: Linux 4.8; UI Render: default; VCL: gtk2; Layout Engine: new; 
TinderBox: Linux-rpm_deb-x86_64@70-TDF, Branch:libreoffice-5-3, Time: 2016-12-14_22:50:48
Locale: en-US (en_US.UTF-8); Calc: group

But the problem still persists, and it is impossible for me to create slideshows with custom animations+Sounds unless i use Microsoft Windows.

Here is the daily build of the 14/12/2016 that i've tested:

libreoffice-5-3~2016-12-14_22.50.48_LibreOfficeDev_5.3.0.0.beta2_Linux_x86-64_deb
Comment 20 Xisco Faulí 2017-09-11 08:32:19 UTC Comment hidden (obsolete)
Comment 21 QA Administrators 2018-09-12 02:39:07 UTC Comment hidden (obsolete)
Comment 22 Roman Kuznetsov 2019-01-14 09:45:23 UTC
still repro in

Version: 6.3.0.0.alpha0+
Build ID: 6b4ea2d8ddd681fec98773d7e0bbec9657a1fc08
CPU threads: 4; OS: Windows 6.1; UI render: default; VCL: win; 
Locale: ru-RU (ru_RU); UI-Language: en-US
Calc: threaded
Comment 23 Anastasius 2020-10-29 08:37:07 UTC
LO 7.0.2.2 does have a 'link' checkbox when inserting transition sound from a file. But this checkbox is ignored, the sound file is always included as a link, whether it is checked or not.

Steps to reproduce:
- create a new slideshow, add a 2nd slide
- save the presentation.
- in "slide transition", select a sound file and keep 'link' unchecked
In presentation mode, the slide will play the sound
- close the presentation, rename the sound file and open the presentation
In presentation mode, the slide will not play the sound. Unzipping the .odp does not show the .mp3 file anywhere, so it was not embedded.

To me it is a severe bug blocking the use of LO! For distance learning in COVID times I have to add sound to my slides, but I can't.
Comment 24 YuNoH 2022-09-26 21:25:43 UTC
I had the same issue on LibreOffice Impress 7.3.6.2, custom transition sounds are only linked, and when sending the odp file to someone else (on another computer), the sound is gone.
This is especially a big problem if you need to make a soundtrack to the slides, for a work you need to send to someone else. At least, it should be stated somewhere that files are only linked, to warn the user that the sound is not included in the .odp ... Because otherwise the user just notices the problem at the end of the work, which might cause him big troubles and annoyances.
Comment 25 Alexey Rukin 2022-12-12 13:35:58 UTC
Still present in 7.4.3.2 (under MS Windows 11). The "link" checkbox is present, but the audio file is not embedded regardless of this checkbox.
Comment 26 Alexey Rukin 2022-12-12 13:37:09 UTC
Created attachment 184112 [details]
File open dialog
Comment 27 Alexey Rukin 2022-12-12 13:39:04 UTC
Created attachment 184113 [details]
The resulting presentation

The audio file is not there: it was a 3.2 M MP3 file!
Comment 28 raal 2024-10-06 06:23:49 UTC
Still repro Version: 25.2.0.0.alpha0+ (X86_64) / Linux
Comment 29 Denis 2025-08-15 14:26:11 UTC
Still present in version 25.2.5.2 X86_64, wow, 12 years old bug!

I tried to make LibreOffice to embed the transition sound in ODP file:
- FLAC,
- MP3,
- OGG,
- OPUS,
- MP4,
- WMA
- WAV
None gets embeded, it's just linked... on the SAME computer.
Now, if you move the ODP file to another folder WITHOUT the sound file, it does play perfectly.
But, if you open it on another computer, WITH the soundfile in the SAME folder, it doesn't play the sound, AND the transition is marked with "no sound".

Then I saved the same file with the transition sound configured into a PPTX format:
- with WAV format, the soundfile gets embeded!! (the size of the file reflects it)
- with any other format, it doesn't.

Then I opened it:
- in Impress on the same compouter: the transition is configured with sound, and it plays, even if it is moved to another folder,
- in Impress on another computer: no sound for the transition, it doesn't play,
- in FreeOffice on another computer, the same PPTX file has the transition WITH sound and it plays flawlessly.

So LibreOffice Impress CAN embed a transition sound file, ONLY if it is a WAV file, AND saved with the PPTX (Powerpoint 2007-365) format (I didn't try other formats).
But it can't recognize the embeded file and transition with sound in ANY format, though the generated file with emebeded sound plays flawlessly in FreeOffice.

I didn't see any error on the terminal when executing Impress from the commandline.

Please, can somebody look into this, it's pretty important to be able to embed the sound files from transitions, as it seems to be the only way to get a sound to play in the background of the whole presentation!

Thanks for the great work anyway.
Comment 30 Denis 2025-08-15 14:43:14 UTC
I found other bug reports that may be related:
https://bugs.documentfoundation.org/show_bug.cgi?id=120569 (Custom Animation Sound Effect Not Played After ODP File Moved To Another Location)
https://bugs.documentfoundation.org/show_bug.cgi?id=124230 (FILESAVE PPTX: Custom Animations Sound Lost on Roundtrip)
https://bugs.documentfoundation.org/show_bug.cgi?id=148478 (FILESAVE PPTX: Audio used in slide transition has gone lost as transition sound if the audio file name contains Chinese Characters (but still exists in sound list))
https://bugs.documentfoundation.org/show_bug.cgi?id=72792 (Inserted music in any Start mode no playback sound from PPT)
https://bugs.documentfoundation.org/show_bug.cgi?id=161473 (Impress stops playing sound files every new sesssion)

And another which is related, but it's more an enhancement:
https://bugs.documentfoundation.org/show_bug.cgi?id=149568 (Cannot remove 'other sounds' from Impress transition sound list)


Those issues are quiet serious when somebody wants to have sound in the transitions, for me it was serious to the point I had to make my presentation on another Office suite.


Maybe, as this bug has been around for 12 years, the importance of this bug should be bumped to "Major"?


Best regards,
Denis.
Comment 31 Denis 2025-09-15 19:58:47 UTC
Hi, can anyone look into this, please?
It has been open for more than 12 years!
Comment 32 Justin L 2025-11-04 20:44:36 UTC
*** Bug 161473 has been marked as a duplicate of this bug. ***
Comment 33 Justin L 2025-11-04 20:46:53 UTC
*** Bug 120569 has been marked as a duplicate of this bug. ***
Comment 34 Zeki Bildirici 2026-01-31 21:07:19 UTC
Hi everyone, please don't take this as presumptuous — I just wanted to leverage new AI tools to bring fresh momentum to this long-standing bug. I had Claude Opus 4.5 analyze the full bug history and codebase references, and it identified that the core issue is straightforward: SlideTransitionPane.cxx never calls ::avmedia::EmbedMedia() after the sound file dialog returns, unlike the working "Insert → Audio or Video" path in sdview4.cxx which does. The 2016 fix (commit 518e1999) added a "Link" checkbox but never wired it to the actual embedding logic. The infrastructure is all there — it just needs to be connected. I've attached a detailed analysis with specific code pointers and proposed fixes. Hoping this helps someone pick it up after 12 years! 🙏

Here is the analysis and fix proposed by Claude

Best regards and loves

# Bug 67544 Analysis: Slide Transition Sound Not Embedded in Presentation

## Executive Summary

Bug 67544, reported by Zeki Bildirici on 2013-07-30, describes that LibreOffice Impress **only links** (rather than embeds) custom slide transition sounds. Despite a fix committed in November 2016 by Samuel Mehrbrodt (commit `518e1999`), the bug persists in all versions through 25.2.5.2 (2025). The core issue is that the "Link" checkbox in the sound file dialog is **ignored** — transition sounds are always stored as external file references, making presentations non-portable.

---

## Timeline & Fix Attempts

| Date | Event |
|------|-------|
| 2013-07-30 | Bug reported by Zeki Bildirici |
| 2013-07-31 | David Tardon identifies code locations: `SdOpenSoundFileDialog` vs `MediaWindow::executeMediaURLDialog()` |
| 2014-03-20 | Jan Holesovsky provides detailed code pointers, suggests using `::avmedia::EmbedMedia` |
| 2014-04-04 | Vishv attempts patch (gerrit #8700), gets stuck — `EmbedMedia()` compiles but doesn't embed |
| 2016-07-11 | Samuel Mehrbrodt posts WIP patch (gerrit #26854) |
| **2016-11-11** | **Commit `518e1999` pushed to master — "tdf#67544 Embed slide transition sound"** |
| 2016-12-16 | Al-Ayoubi tests 5.3.0 beta2 — **problem still persists** |
| 2019-01-14 | Still reproducible in 6.3.0 |
| 2020-10-29 | Anastasius confirms: "Link" checkbox exists but is **ignored** |
| 2022-12-12 | Alexey Rukin confirms: 3.2 MB MP3 not embedded in resulting ODP |
| 2024-10-06 | Still reproducible in 25.2.0 alpha |
| 2025-08-15 | Denis provides exhaustive testing across formats |
| 2025-11-29 | Bug still open, 4 duplicates merged |

---

## The Problem: Multi-Layered Failure

Denis's testing in Comment 29 (2025) reveals the bug is actually **three separate failures**:

### Failure 1: ODP Format — Sound is NEVER Embedded

When saving to ODP (native format):
- No audio format gets embedded (FLAC, MP3, OGG, OPUS, MP4, WMA, WAV — all tested)
- The sound is always stored as a filesystem link
- Moving the ODP to another folder (without the sound file) results in silence

### Failure 2: PPTX Format — Only WAV Gets Embedded

When saving to PPTX:
- **WAV**: Embedded correctly (file size reflects it) ✓
- **MP3, OGG, FLAC, etc.**: NOT embedded, only linked ✗

### Failure 3: PPTX Roundtrip — Embedded Sound Not Recognized on Reload

Even when a PPTX file has a correctly embedded WAV transition sound:
- Same computer: works ✓
- **Different computer in Impress: "no sound" shown for transition** ✗
- Different computer in FreeOffice: works perfectly ✓

This proves the PPTX export does embed correctly, but the **PPTX import filter** fails to read back the embedded transition sound.

---

## Root Cause Analysis

### Architecture of the Bug

The code path for transition sounds is fundamentally different from "Insert → Audio or Video" media:

```
Insert → Audio or Video:
  MediaWindow::executeMediaURLDialog()
  → Uses standard sfx2 file dialog with proper Link checkbox
  → Calls ::avmedia::EmbedMedia() when Link is unchecked
  → Sound embedded into vnd.sun.star.Package:Media/
  → Sound persisted in ODP ZIP under Media/ directory

Slide Transition → Sound → Other Sound:
  SdOpenSoundFileDialog (sd/source/ui/dlg/filedlg.cxx)
  → Custom minimal file dialog
  → Returns raw filesystem URL (file:///path/to/sound.mp3)
  → URL stored directly in SdPage transition properties
  → On save: URL written as-is (external reference)
  → ::avmedia::EmbedMedia() NEVER CALLED
```

### What the 2016 Commit Actually Did

The 2016 commit (`518e1999`) by Samuel Mehrbrodt modified the `SdOpenSoundFileDialog` to include a "Link" checkbox. However, based on all subsequent reports, the critical step — **actually calling `EmbedMedia()` when Link is unchecked** — either was not implemented correctly or was reverted/broken by subsequent changes.

### The Specific Code Failure Points

#### 1. `sd/source/ui/dlg/filedlg.cxx` — `SdOpenSoundFileDialog`

This dialog class returns only a raw file path. Even though a "Link" checkbox was added, the calling code in `SlideTransitionPane` doesn't use the checkbox state to decide whether to embed.

**What's missing**: After the user selects a file and unchecks "Link", the code should call `::avmedia::EmbedMedia()` to copy the sound file into the document's package storage and return the internal URL (e.g., `vnd.sun.star.Package:Media/sound.mp3`).

#### 2. `sd/source/ui/animations/SlideTransitionPane.cxx` — Sound Selection Handler

When the user picks "Other sound..." from the dropdown, the `SoundListBoxSelected` handler:
1. Opens `SdOpenSoundFileDialog`
2. Gets the raw file path
3. Stores it directly in `aEffect.maSoundURL`
4. Applies to the slide page

**What's missing**: Between steps 2 and 3, the code should embed the sound file into the document package (when not linking) and replace the filesystem URL with the internal package URL.

#### 3. ODP Save Path — `sd/source/filter/xml/`

The ODP export filter writes the transition sound URL directly. Since the URL is a `file:///` path, it becomes an external reference. The ODF `<presentation:sound>` element's `xlink:href` attribute gets the raw filesystem path rather than a relative path to an embedded resource.

#### 4. PPTX Import Path — `oox/source/ppt/`

The PPTX import filter does not properly resolve embedded transition sound references. When reading `<p:snd>` elements that point to embedded media in the PPTX package, the filter fails to make them available to Impress's transition sound system.

---

## Proposed Fix

The fix needs to touch **three areas**:

### Fix 1: Embed Sound on Selection (Primary Fix)

**File**: `sd/source/ui/animations/SlideTransitionPane.cxx`

In the sound selection handler (around `IMPL_LINK(SlideTransitionPane, SoundListBoxSelected, ...)`):

```cpp
// After getting the file path from the dialog:
OUString aFile = aFileDialog.GetPath();

// NEW: Embed the sound if "Link" is not checked
if (!aFileDialog.IsInsertAsLink())
{
    // Get the document model
    uno::Reference<frame::XModel> xModel(
        mpDrawDoc->GetObjectShell()->GetModel());
    
    OUString aTempFileURL;
    bool bSuccess = ::avmedia::EmbedMedia(xModel, aFile, aTempFileURL);
    if (bSuccess && !aTempFileURL.isEmpty())
    {
        aFile = aTempFileURL;  // Use the embedded URL
    }
}

// Continue with aFile as before...
```

This mirrors exactly how `sd/source/ui/view/sdview4.cxx` handles media insertion for "Insert → Audio or Video".

### Fix 2: Expose Link State from Dialog

**File**: `sd/source/ui/dlg/filedlg.cxx`

Ensure `SdOpenSoundFileDialog` properly exposes the Link checkbox state:

```cpp
// The dialog should have:
bool SdOpenSoundFileDialog::IsInsertAsLink() const
{
    // Return the state of the SFXWB_INSERT_AS_LINK / checkbox
    // If checkbox is checked, return true (link mode)
    // If unchecked, return false (embed mode)
    return mpImpl->IsInsertAsLink();
}
```

The dialog template (`TEMPLATE_LONG_FILEDLG_IMPL`) should default "Link" to **unchecked** (embed by default), matching user expectations and PowerPoint behavior.

### Fix 3: Fix PPTX Import for Transition Sounds

**Files**: `oox/source/ppt/slidetransitioncontext.cxx` and related

When importing PPTX files, the `<p:snd>` element within `<mc:AlternateContent>` / `<p:transition>` needs to:
1. Resolve the `r:embed` relationship to the actual media file in the PPTX package
2. Import the media file into the LibreOffice document package
3. Set the transition sound URL to the internal package URL

Look at how `<p:audio>` elements are handled in animation import (`oox/source/ppt/animationtypes.cxx`) and replicate that pattern for transition sounds.

---

## Files to Modify

| File | Purpose |
|------|---------|
| `sd/source/ui/dlg/filedlg.cxx` | Sound file dialog — ensure Link checkbox works and defaults to unchecked |
| `sd/source/ui/animations/SlideTransitionPane.cxx` | Call `EmbedMedia()` after file selection when not linking |
| `sd/source/ui/view/sdview4.cxx` | **Reference implementation** — shows correct `EmbedMedia` usage |
| `avmedia/source/viewer/mediawindow.cxx` | `EmbedMedia()` function — the embedding mechanism |
| `oox/source/ppt/slidetransitioncontext.cxx` | PPTX import — resolve embedded transition sound references |
| `sd/source/filter/xml/sdxmlwrp.cxx` | ODP export — verify transition sound URL handling |

---

## How to Verify the Fix

### Test Case 1: ODP Embedding
1. Create new Impress presentation, add 2 slides
2. Set slide transition → Sound → "Other sound..." → select an MP3 file with "Link" **unchecked**
3. Save as ODP
4. Move ODP to different folder (without the MP3)
5. Open ODP → transition should play the sound
6. Unzip ODP → verify `Media/` directory contains the MP3

### Test Case 2: PPTX Roundtrip
1. Same as above but save as PPTX
2. Open on a different computer in Impress → sound should play
3. Test with WAV, MP3, and OGG formats

### Test Case 3: Cross-Application Compatibility
1. Create presentation with embedded transition sound in PowerPoint
2. Open in Impress → sound should be recognized and play

---

## Priority Assessment

This should be classified as **Major** (not just Normal) because:

- It has been open for **12+ years**
- It has **4 confirmed duplicates** and affects a core use case
- It makes Impress presentations **non-portable** — a fundamental expectation for presentation software
- The "Insert → Audio or Video" path works correctly, proving the infrastructure exists
- Users are forced to use other software (PowerPoint, FreeOffice) as workaround
- Multiple users confirmed it blocks use of Impress for educational and professional purposes

---

## Quick Workaround for Users

Until the fix is merged, users can work around this by:

1. **Insert the audio as an object** using "Insert → Audio or Video" (this embeds correctly)
2. Set the audio to play automatically on slide show
3. Alternatively, save as PPTX with WAV files only (WAV embedding works in PPTX export, though roundtrip is broken)