Become a MacRumors Supporter for $50/year with no ads, ability to filter front page stories, and private forums.

The Void

macrumors regular
Original poster
Oct 29, 2003
122
0
I've made my project in DSP, tested it in the simulator, all fine. When I try to build/format it, it starts off ok, (straight to 14% complete) but then after a short while (somewhere around 22%), Activity Monitor reports that DSPX_EncoderServ and DSPX_AEncoderSer have stopped responding, and the encode slows to barely beyond a crawl. Activity Monitor also shows the CPU running at something like 50% Nice.

I've used DSP before with no problem, on the same machine, so I'm not sure what the problem is. I'm using two anamorphic DV files, 7.4 & 8.8 GB as assets. PB 1.5GHz, 1 GB ram.

I've tried restarts, repairing permissions, saving the project as a copy and using that instead, aborting the encode and trying again (several times), all to no avail. I googled and found one guy with the same problem, but no solution.

I took a sample of DSPX_EncoderServ from Activity Monitor, in case that sheds any light for anyone (I haven't a clue):

-------------
Analysis of sampling pid 1789 every 10.000000 milliseconds
Call graph:
225 Thread_0f0f
225 _dyld_start
225 0xa25c
225 0xaaa8
225 CFRunLoopRun
225 CFRunLoopRunSpecific
225 __CFRunLoopRun
225 __CFRunLoopDoSource1
225 __CFMessagePortPerform
225 0xa688
225 0xace0
225 0xebbc
225 0x10710
225 0x14c90
189 0x1a0b4
189 MPWaitOnQueue
189 pthread_cond_wait
189 semaphore_wait_signal_trap
189 semaphore_wait_signal_trap
26 0x1a1cc
26 0x1c4f8
26 0x1c3b4
26 0x24b78
26 0x24d74
21 0x1b214
21 0x1b10c
21 TaskMovie_priv
21 MediaMoviesTask
21 CallComponent
21 CallComponentFunctionCommon
21 Video2MoviesTask
21 v2m_doWhatTheMentorTellsUs
20 QueueAFrame
11 v2m_decompressVideoFrame
11 v2m_rDecompressSequenceFrameWhen
11 DecompressSequenceFrameWhen
11 ICMDeviceLoop
10 ICMAction_aligned
10 DoBandedDecompress
9 ImageCodecBandDecompress
9 CallComponent
9 CallComponent
9 CallComponent
9 CallComponentFunctionCommon
9 Base_CDBandDecompress
9 BaseCodec_DecompressCallBack_Common
9 InvokeComponentMPWorkFunctionUPP
9 BaseCodec_DecompressWorkFunction
9 ImageCodecDrawBand
9 CallComponent
9 CallComponentFunctionCommon
9 ImageCodecDrawBand
9 CallComponent
9 CallComponentFunctionCommon
9 DVC_DDrawBand
9 DecompressFrameConcurrentlyMP
9 DecompressSegmentsConcurrentlyAtomicCounter
8 DecompressSegmentsConcurrentlyAtomicCounter
5 vVLD3_nextCodeWord
5 vVLD3_nextCodeWord
1 vVLD3_decodeTable12
1 vVLD3_decodeTable12
1 vVLD3_initDCTBlock
1 vVLD3_initDCTBlock
1 vVLD3_nextMacroBlock
1 vVLD3_nextMacroBlock
1 vec_IDCT_FS
1 vec_IDCT_FS
1 TransformRect
1 TransformRect
1 NewRgn
1 SetEmptyShape
1 dyld_stub_memcpy
1 dyld_stub_memcpy
9 DataHFinishData
9 CallComponent
9 CallComponentFunctionCommon
9 SDH_FinishData
9 RSFinish
6 TSWaitOnSemaphoreCommon
6 pthread_cond_wait
6 semaphore_wait_signal_trap
6 semaphore_wait_signal_trap
3 TSSignalSemaphore
3 pthread_cond_signal
3 semaphore_signal_thread_trap
3 semaphore_signal_thread_trap
1 LoadAFrame
1 addNewSchedule
1 MediaCCGetChunkCacheHandle
1 CallComponent
1 CallComponentFunctionCommon
1 Video2CCGetChunkCacheHandle
1 MediaCCGetChunkCacheHandle
1 CallComponent
1 CallComponentFunctionCommon
1 STMediaCCGetChunkCacheHandle
1 STMediaCCGetChunkCacheHandle
5 0x1b290
5 __memcpy
5 __memcpy
4 0x1a1b8
4 MPNotifyQueue
4 TSUnlockMutex
4 pthread_mutex_unlock
4 semaphore_signal_trap
4 semaphore_signal_trap
4 0x1c4a8
4 0x1c4a8
2 0x1a2b8
1 0x160f4
1 0x16514
1 FlushVol
1 PBFlushVolSync
1 fsync
1 fsync
1 0x1b814
1 PBWriteForkSync
1 BasicWrite(FileRecord*, short, long long, unsigned long long*, void*, unsigned long long*)
1 pwrite
1 pwrite
225 Thread_1003
225 _pthread_body
225 forkThreadForFunction
225 0xb3ec
225 +[NSThread sleepUntilDate:]
225 syscall_thread_switch
225 syscall_thread_switch
225 Thread_1103
225 _pthread_body
225 AVS::DestroyAVCDeviceController(AVS::AVCDeviceController*)
225 CFRunLoopRun
225 CFRunLoopRunSpecific
225 __CFRunLoopRun
225 mach_msg
225 mach_msg_trap
225 mach_msg_trap
225 Thread_1203
225 _pthread_body
225 CAPThread::Entry(CAPThread*)
225 HALRunLoop::OwnThread(void*)
225 CFRunLoopRunSpecific
225 __CFRunLoopRun
225 mach_msg
225 mach_msg_trap
225 mach_msg_trap
225 Thread_1303
225 _pthread_body
225 ReadSchedulerThreadEntryPoint
222 TSWaitOnSemaphoreCommon
222 pthread_cond_timedwait_relative_np
222 semaphore_timedwait_signal_trap
222 semaphore_timedwait_signal_trap
1 FulfillFromHeadPiece
1 __memcpy
1 __memcpy
1 IssueTailPieceRead
1 QTWFReadAsync
1 WFRead64WithFlags
1 WFRead64WithFlags_priv
1 PBReadForkAsync
1 BasicAIORead(FileRecord*, void*, unsigned char)
1 aio_read
1 aio_read
1 QTWFReadAsync
1 WFRead64WithFlags
1 WFRead64WithFlags_priv
1 PBReadForkAsync
1 BasicAIORead(FileRecord*, void*, unsigned char)
1 aio_read
1 aio_read
225 Thread_1403
225 _pthread_body
225 AIOFileThread(void*)
220 TSWaitOnSemaphoreCommon
220 pthread_cond_timedwait_relative_np
219 semaphore_timedwait_signal_trap
219 semaphore_timedwait_signal_trap
1 restore_sem_to_pool
1 restore_sem_to_pool
5 aio_suspend
5 aio_suspend
225 Thread_1503
225 _pthread_body
225 VSPFrameworkUtilityThread
224 mach_msg
224 mach_msg_trap
224 mach_msg_trap
1 0x7c704
1 pthread_mutex_lock
1 dyld_stub_semaphore_wait_trap
1 dyld_stub_semaphore_wait_trap
225 Thread_1603
225 _pthread_body
225 PrivateMPEntryPoint
225 0x1a488
225 dyld_stub_strcat
225 0x8ec50
223 0xa0f5c
219 0xa09ac
219 0x88490
219 0x9a660
195 0x9a41c
194 0x829f8
194 pthread_cond_wait
194 semaphore_wait_signal_trap
194 semaphore_wait_signal_trap
1 0x82994
1 pthread_cond_wait
1 semaphore_wait_signal_trap
1 semaphore_wait_signal_trap
24 0x9a104
23 0x829f8
23 pthread_cond_wait
22 semaphore_wait_signal_trap
22 semaphore_wait_signal_trap
1 pthread_mutex_lock
1 semaphore_wait_signal_trap
1 semaphore_wait_signal_trap
1 0x829d8
1 0xfff80000
1 pthread_cond_broadcast
1 pthread_cond_broadcast
2 0xa04a8
2 0x1ba7c
2 0x1bd50
2 0x1bd98
2 MPWaitOnQueue
2 pthread_cond_wait
2 semaphore_wait_signal_trap
2 semaphore_wait_signal_trap
1 0xa04e4
1 0x1bb14
1 0x1bd50
1 0x1bd98
1 MPWaitOnQueue
1 pthread_cond_wait
1 semaphore_wait_signal_trap
1 semaphore_wait_signal_trap
1 0xa0758
1 0x1ba7c
1 0x1bd50
1 0x1bd98
1 MPWaitOnQueue
1 pthread_cond_wait
1 semaphore_wait_signal_trap
1 semaphore_wait_signal_trap
1 0xa10f0
1 0x1bbec
1 0x1bd50
1 0x1bd98
1 MPWaitOnQueue
1 pthread_cond_wait
1 semaphore_wait_signal_trap
1 semaphore_wait_signal_trap
1 0xa114c
1 0x1bc5c
1 0x1bd50
1 0x1bd98
1 MPWaitOnQueue
1 pthread_cond_wait
1 semaphore_wait_signal_trap
1 semaphore_wait_signal_trap
225 Thread_1703
225 _pthread_body
172 0x828f8
172 0x7d254
76 0x7d61c
17 0x7cfe0
17 0x7c6b0
17 pthread_cond_wait
17 semaphore_wait_signal_trap
17 semaphore_wait_signal_trap
12 0x7d14c
3 0x97f04
1 0x9666c
1 0x9666c
1 0x968e4
1 0x968e4
1 0x968f8
1 0x968f8
3 0x97f68
1 0x967c0
1 0x967c0
1 0x968c4
1 0x968c4
1 0x97d58
1 0x97d58
2 0x97f48
1 0x968ec
1 0x968ec
1 0x97cfc
1 0x97cfc
2 0x97f88
1 0x96820
1 0x96820
1 0x968d0
1 0x968d0
1 0x97f1c
1 0x968d0
1 0x968d0
1 0x97fa8
1 0x96818
1 0x96818
8 0x7d070
8 0xa014c
1 0x6d298
1 0x6d298
1 0x6d310
1 0x6d310
1 0x6d3b4
1 0x6d3b4
1 0x71d74
1 0x71d74
1 0x71dc0
1 0x71dc0
1 0x75858
1 0x75858
1 0x9fb8c
1 0x9fb8c
1 0x9ff00
1 0x9ff00
8 0x7d110
5 0x916bc
5 0x906ac
1 0x90c34
1 0x90c34
1 0x90d10
1 0x90d10
1 0x90f04
1 0x90f04
1 0x90f9c
1 0x90f9c
1 0x911c0
1 0x911c0
3 0x916f0
3 0x906ac
1 0x907d8
1 dyld_stub_memcpy
1 dyld_stub_memcpy
1 0x90a08
1 0x90a08
1 0x90e40
1 0x90e40
6 0x7d0d4
6 0x734e0
2 0x72edc
1 0x731d8
1 0x731d8
1 0x733dc
1 0x733dc
2 0x73044
1 0x733c8
1 0x733c8
1 0x733cc
1 0x733cc
1 0x72a30
1 0x72a30
1 0x72b00
1 0x72b00
6 0x7d124
4 0x9133c
2 0x8f2cc
1 0x8fcfc
1 0x8fcfc
1 0x8ffb4
1 0x8ffb4
1 0x8f1a8
1 0x8f90c
1 0x8f90c
1 0x8f2f8
1 0x8faa8
1 0x8faa8
2 0x91368
2 0x8f178
1 0x8fc78
1 0x8fc78
1 0x90040
1 0x90040
5 0x7d0e8
5 0x917a0
5 0x906ac
1 0x909f0
1 0x909f0
1 0x90f50
1 0x90f50
1 0x9113c
1 0x9113c
1 0x91160
1 0x91160
1 0x911e0
1 0x911e0
4 0x7d138
3 0x973b0
1 0x967c0
1 0x967c0
1 0x96838
1 0x96838
1 0x968d0
1 0x968d0
1 0x973fc
1 0x968c4
1 0x968c4
3 0x7d020
3 0x6ecd8
1 0x6d05c
1 0x6d05c
1 0x71d74
1 0x71d74
1 0xaa3e8
1 0xaa3e8
3 0x7d0c0
2 0x95fa4
2 0x95978
1 0x95de0
1 0x95de0
1 0x95e80
1 0x95e80
1 0x95fcc
1 0x95978
1 0x95df8
1 0x95df8
2 0x7d0ac
2 0x73f50
1 0x73634
1 0x73634
1 0x7364c
1 0x7364c
1 0x7d098
1 0x96070
1 0x95938
1 0x95938
1 0x7d0fc
1 0x9153c
1 0x8f2cc
1 0x8fe38
1 0x8fe38
68 0x7d628
43 0x80700
43 0x9b718
19 0x9b3a4
8 0xaa3d0
8 0xaa3d0
1 0x9c600
1 0x9c600
1 0x9c620
1 0x9c620
1 0x9c6a4
1 0x9c6a4
1 0x9c6e0
1 0x9c6e0
1 0x9c730
1 0x9c730
1 0x9c740
1 0x9c740
1 0x9c76c
1 0x9c76c
1 0x9c7a4
1 0x9c7a4
1 0x9c7ac
1 0x9c7ac
1 0x9c7c8
1 0x9c7c8
1 0x9c864
1 0x9c864
1 0x71d74
1 0x71d74
1 0x9c90c
1 0x9c90c
1 0x9c918
1 0x9c918
1 0x9c930
1 0x9c930
1 0x9c950
1 0x9c950
1 0x9c958
1 0x9c958
1 0x9c9c8
1 0x9c9c8
1 0x9cf2c
1 0x9cf2c
1 0x9d00c
1 0x9d00c
1 0x9d070
1 0x9d070
1 0x9d0c8
1 0x9d0c8
1 0x9d3b8
1 0x9d3b8
1 0x9d3f8
1 0x9d3f8
1 0x9d400
1 0x9d400
1 0x9d428
1 0x9d428
1 0x9d430
1 0x9d430
1 0x9d434
1 0x9d434
1 0x9d444
1 0x9d444
1 0x9d484
1 0x9d484
1 0x9d53c
1 0x9d53c
1 0x9d550
1 0x9d550
1 0x9d740
1 0x9d740
1 0x9d74c
1 0x9d74c
1 0x9d93c
1 0x9d93c
18 0x80688
18 0x7c6b0
18 pthread_cond_wait
18 semaphore_wait_signal_trap
18 semaphore_wait_signal_trap
7 0x806e8
7 0x9c400
2 0x9d23c
2 0x9d23c
1 0x71d74
1 0x71d74
1 0x9c0ac
1 0x9c780
1 0x9c780
1 0x9ca64
1 0x9ca64
1 0x9d234
1 0x9d234
1 0x9d480
1 0x9d480
13 0x7d424
4 0x835e0
4 0x835e0
3 0x835ec
3 0x835ec
3 0x83628
3 0x83628
1 0x835b4
1 0x835b4
1 0x83734
1 0x83734
1 0x837f8
1 0x837f8
4 0x7d46c
3 0x80bf0
3 0x70de4
1 0x6c624
1 0x7241c
1 0x7241c
1 0x71e04
1 0x71e04
1 0x71e48
1 0x71e48
1 0x80bd8
1 0x75f74
1 0x75e10
1 0xaa3c0
1 0xaa3c0
3 0x7d478
1 0x80cb0
1 0x7c6b0
1 pthread_cond_wait
1 semaphore_wait_signal_trap
1 semaphore_wait_signal_trap
1 0x80cf4
1 0x76e2c
1 0x76788
1 0x76fd4
1 0x76fd4
1 0x80d0c
1 0x71998
1 0x9e404
1 0x9e404
3 0x7d5dc
3 0x7233c
2 0x71d74
2 0x71d74
1 0x71d68
1 0x71d68
2 0x7d40c
1 0x7c678
1 VSPSetThreadParameters
1 IOConnectMethodScalarIScalarO
1 io_connect_method_scalarI_scalarO
1 mach_msg
1 mach_msg_trap
1 mach_msg_trap
1 0x7c6b0
1 pthread_cond_wait
1 semaphore_wait_signal_trap
1 semaphore_wait_signal_trap
2 0x7d504
2 0x762dc
1 0x75058
1 0x75058
1 0x751a0
1 0x751a0
1 0x7d4c8
1 0x7c6b0
1 pthread_cond_wait
1 semaphore_wait_signal_trap
1 semaphore_wait_signal_trap
51 0x828b8
51 pthread_cond_wait
51 semaphore_wait_signal_trap
51 semaphore_wait_signal_trap
2 0x82930
2 pthread_mutex_unlock
2 semaphore_signal_trap
2 semaphore_signal_trap
225 Thread_1803
225 _pthread_body
185 0x828f8
185 0x7d254
84 0x7d628
83 0x80688
83 0x7c6b0
83 pthread_cond_wait
83 semaphore_wait_signal_trap
83 semaphore_wait_signal_trap
1 0x806d0
1 0x9bb10
1 0x9d1c8
1 0x9d1c8
82 0x7d61c
82 0x7cfe0
82 0x7c6b0
82 pthread_cond_wait
82 semaphore_wait_signal_trap
82 semaphore_wait_signal_trap
5 0x7d46c
4 0x80b94
4 0x7c6b0
4 pthread_cond_wait
4 semaphore_wait_signal_trap
4 semaphore_wait_signal_trap
1 0x80bb8
1 0x74270
1 0x71d74
1 0x71d74
5 0x7d478
5 0x80cb0
5 0x7c6b0
5 pthread_cond_wait
5 semaphore_wait_signal_trap
5 semaphore_wait_signal_trap
5 0x7d5c8
4 0x7c6b0
4 pthread_cond_wait
4 semaphore_wait_signal_trap
4 semaphore_wait_signal_trap
1 0x7c678
1 VSPSetThreadParameters
1 IOConnectMethodScalarIScalarO
1 io_connect_method_scalarI_scalarO
1 mach_msg
1 mach_msg_trap
1 mach_msg_trap
3 0x7d40c
3 0x7c6b0
3 pthread_cond_wait
3 semaphore_wait_signal_trap
3 semaphore_wait_signal_trap
1 0x7d4ec
1 0x74518
1 0x7545c
1 0x7545c
40 0x828b8
40 pthread_cond_wait
40 semaphore_wait_signal_trap
40 semaphore_wait_signal_trap
225 Thread_1903
225 _pthread_body
178 0x828f8
178 0x7d254
79 0x7d628
69 0x80688
69 0x7c6b0
69 pthread_cond_wait
69 semaphore_wait_signal_trap
69 semaphore_wait_signal_trap
7 0x806e8
7 0x9c400
2 0x9c0ac
2 0x9c6bc
2 0x9c6bc
2 0x9d218
2 0x9d218
1 0x9cd28
1 0x9cd28
1 0x9d414
1 0x9d414
1 0x9d41c
1 0x9d41c
3 0x80700
3 0x9b718
1 0x9d070
1 0x9d070
1 0x9d434
1 0x9d434
1 0x9d484
1 0x9d484
77 0x7d61c
67 0x7cfe0
66 0x7c6b0
66 pthread_cond_wait
64 semaphore_wait_signal_trap
64 semaphore_wait_signal_trap
2 restore_sem_to_pool
2 restore_sem_to_pool
1 0x7c6a0
1 VSPStartShuttle
1 io_connect_method_structureI_structureO
1 mach_msg
1 mach_msg_trap
1 mach_msg_trap
2 0x7d110
1 0x916bc
1 0x906ac
1 0x91200
1 0x91200
1 0x916f0
1 0x906ac
1 0x90cf8
1 0x90cf8
2 0x7d14c
1 0x97f04
1 0x9683c
1 0x9683c
1 0x97fa8
1 0x9681c
1 0x9681c
1 0x7cfb8
1 0x8104c
1 0x8104c
1 0x7d070
1 0xa014c
1 0x6d348
1 0x6d348
1 0x7d098
1 0x96070
1 0x95978
1 0x95b1c
1 dyld_stub_memcpy
1 dyld_stub_memcpy
1 0x7d0c0
1 0x95fcc
1 0x95978
1 0x95b1c
1 dyld_stub_memcpy
1 dyld_stub_memcpy
1 0x7d0e8
1 0x917a0
1 0x906ac
1 0x909e0
1 0x909e0
1 0x7d0fc
1 0x9153c
1 0x8f2cc
1 0x8fe04
1 0x8fe04
6 0x7d478
4 0x80cb0
4 0x7c6b0
4 pthread_cond_wait
4 semaphore_wait_signal_trap
4 semaphore_wait_signal_trap
1 0x80cf4
1 0x76e2c
1 0x9e400
1 0x9e400
1 0x80d0c
1 0x71998
1 0x9d9f4
1 0x9d9f4
5 0x7d40c
5 0x7c6b0
5 pthread_cond_wait
5 semaphore_wait_signal_trap
5 semaphore_wait_signal_trap
5 0x7d5c8
5 0x7c6b0
5 pthread_cond_wait
5 semaphore_wait_signal_trap
5 semaphore_wait_signal_trap
3 0x7d46c
2 0x80b94
2 0x7c6b0
2 pthread_cond_wait
2 semaphore_wait_signal_trap
2 semaphore_wait_signal_trap
1 0x80bd8
1 0x75f74
1 0x71e04
1 0x71e04
2 0x7d424
2 0x835b4
2 0x835b4
1 0x7d4c8
1 0x7c6b0
1 pthread_cond_wait
1 semaphore_wait_signal_trap
1 semaphore_wait_signal_trap
47 0x828b8
47 pthread_cond_wait
47 semaphore_wait_signal_trap
47 semaphore_wait_signal_trap

Total number in stack (recursive counted multiple, when >=5):
32 semaphore_wait_signal_trap
31 pthread_cond_wait
18 0x7c6b0
10 _pthread_body
9 CallComponent
7 CallComponentFunctionCommon
6 0x71d74
6 0x906ac
6 MPWaitOnQueue
6 mach_msg
6 mach_msg_trap
5 0x1bd50
5 0x1bd98

Sort by top of stack, same collapsed (when >= 5):
semaphore_wait_signal_trap 926
mach_msg_trap 677
semaphore_timedwait_signal_trap 441
syscall_thread_switch 225
0xaa3d0 8
0x71d74 7
__memcpy 6
semaphore_signal_trap 6
aio_suspend 5
vVLD3_nextCodeWord 5
Sample analysis of process 1789 written to file /dev/stdout
Sampling process 1789 each 10 msecs 300 times
------------------

Looks like 'semaphore_wait_signal_trap' might be the problem?

Any suggestions would be greatly appreciated.

The Void
...............
Bobbed
 
I also tried trashing the preferences (duh!), running in a different user, and re-installing DVDSP. All to no avail.

I've also noticed that while DSPX_EncoderServer seems content to plod along, the crawl to a standstill happens when DSPX_AEncoderServer suddenly drops to 0% CPU usage in Activity Monitor.

Still none the wiser though....

The Void
................
Chocced out.
 
I'll preface this by saying that I don't use DVDSP, though I am a professional DVD Author by training so maybe some of this will actually apply to your situation.
When you have problems on the build the things you should look at are a bad file/bad file address or a lack of drive space.
If you've been shuffling files around DVDSP might not have kept up and can't find one of 'em. Perhaps a file is bad, corrupt, out of spec? A massive encode spike could also crash a build.
If your machine doesn't have enough drive space to process the whole project, that might be doing it too. Do you have 4.7 GB of free space? I don't know if DVDSP needs it, but I've heard of some pretty weird stuff from DVDSP users so who knows?
Hope this is helpful, but like I said, I don't use DVDSP so I'm just applying experience from other apps.
 
Is DVDSP encoding motion menus? I import assets encoded in Compressor and minimize the amount of compression done by DVDSP. I've always worked this way and have not had any of the encoding stalls you are experiencing.

Do you have any third party hacks like Shapeshifter installed on your system?
 
Thanks for the replies, guys. [Wow, a typing hampster!]

Drive space wasn't the issue, as all my assets were on a new external fw drive with 160GB+ free space. I don't *think* it was bad files, since Toast managed to encode from the same ones.

I did have motion menus, so I switched to stills, and also turned on background encoding, and let DSP get on with creating all the m2vs, aifs & pars before trying anything else. (The two processes previously mentioned went to 'not responding' again, but the encodes carried on). When it had finished doing those (about 3.5-4 hours, but, fair enough), I tried to build/format, but instantly the whole system froze up, and forced me to restart. I then turned off background encoding and tried to build again - this time: SUCCESS!

So, I finally got it sorted, but I'm not sure if Motion Menus or Background encoding was the key.

Thanks for your help.

Edit: Mainmenu, iClip, Quicksilver, Mousezoom, Sidetrack - are any of those really 'hacks'? I've not read of anyone having any major problems with those ones.
 
Register on MacRumors! This sidebar will go away, and you'll see fewer ads.